IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertions vides dans formulaire


Sujet :

PHP & Base de données

  1. #21
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    alors, voici mon nouveau code. qu'en pensez vous?
    formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $token = hash('sha1', uniqid(rand(), true));
    $_SESSION['token'] = $token;
    ?>
    ...
    <form id="form_register" method="post">
    	<p><input type="text" name="f_name" size="40" maxlength="40" required="required"></p>
    	<p><input type="text" name="l_name" size="40" maxlength="40" required="required"></p>
     	<input type="hidden" name="token" value="<?php echo $token; ?>">
    	<p><button type="submit" class="btn"><span>Valider</span></button></p>
    </form>
    ...
    fichier de traitement php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $token_form = (isset($_POST['token'])) ? $_POST['token'] : "no_tok_form";
    $token_sess = (isset($_SESSION['token'])) ? $_SESSION['token'] : "no_tok_sess";
     
    if($token_form === $token_sess) {
    	unset($_SESSION['token']);
     
    	$civility = $_POST['civility'];
    	$email = trim($_POST['email']);
    	...
     
    	$ins = $dbh->prepare("INSERT INTO directory (civility, ...) VALUES (?, ...)");
    	if($ins->execute(array($civility, ...))) echo "ok";
    	else {
    		echo "erreur";
    		exit();
    	}
    }
    else exit();
    toute petite question, est ce que je dois mettre:
    1- un exit() pour le dernier 'else'
    2- afficher un message d'erreur
    3- mettre une redirection header(Location: accueil.php)
    4- enlever tout simplement le 'else'.

    je ne sais pas trop ce qui doit etre fait par rapport a l'indexation des moteurs de recherche!

    Merci

  2. #22
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    j'aurais 2 questions a te poser stp:
    1- apres avoir verifier le token et proceder a l'insertion des donnees, devrais-je supprimer la variable de session apres?
    2- dois je utiliser un token uniquement pour les appels ajax qui contiennent un INSERT? car j'ai d'autres appels avec des UPDATES ou SELECT
    1- Comme de toute manière la variable sera remplacée par un nouveau token le moment venu il n'est pas nécessaire de la supprimer. Mais c'est pas non plus nécessaire de garder des données inutiles. Donc tu fais bien comme tu veux ^^

    2- Je le fait sur tout appel à formulaire (ajax ou non) ce qui permet d'être à peut près sur que c'est bien le formulaire de mon site qui a été soumis et non pas une attaque venant de l’extérieur.

    toute petite question, est ce que je dois mettre:
    J'aurais tendance à dire que renvoyer un status Forbidden avec un header peut être intéressant.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    merci pour ces precisions

    j'ai mis un header("HTTP/1.0 403 Forbidden"); pour le dernier else, mais rien ne semble se passer. ce header n'est il pas censé afficher une erreur 403 ?

    derniere question
    j'ai un autre dossier qui contient que des fichiers a inclure (header, footer, quelque formulaires, ...) dois je les proteger aussi ? je ne sais pas comment les moteurs de recherches considerent ces fichiers...!!

  4. #24
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    j'ai mis un header("HTTP/1.0 403 Forbidden"); pour le dernier else, mais rien ne semble se passer.
    Tu dois avoir dans les entetes http renvoyée le code 403. Après c'est possible qu'il manque d'autres header pour afficher réellement la page 403 fournie par ton serveur.
    j'ai un autre dossier qui contient que des fichiers a inclure
    Un .htaccess avec deny from all à l'interieur empêchera quiconque d'y accéder. La meilleure solution étant encore de sortir ce dossier de la racine accessible depuis le web.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #25
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    Tu dois avoir dans les entetes http renvoyée le code 403. Après c'est possible qu'il manque d'autres header pour afficher réellement la page 403 fournie par ton serveur.
    mais comment est ce que je peux faire pour afficher une erreur 403?

  6. #26
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    j'ai trouvé une solution mais je ne sais pas si elle est bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    else {
    	header("HTTP/1.0 403 Forbidden");
    	header("Location: /error-403.html"); 
    	exit();
    }
    dois je mettre HTTP/1.0 ou 1.1 ??

  7. #27
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 421
    Par défaut
    Citation Envoyé par redah75 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if($token_form === $token_sess) {
    	unset($_SESSION['token']);
     
    	$civility = $_POST['civility'];
    	$email = trim($_POST['email']);
    	...
     
    	$ins = $dbh->prepare("INSERT INTO directory (civility, ...) VALUES (?, ...)");
    	if($ins->execute(array($civility, ...))) echo "ok";
    	else {
    		echo "erreur";
    		exit();
    	}
    }
    else exit();
    toute petite question, est ce que je dois mettre:
    1- un exit() pour le dernier 'else'
    2- afficher un message d'erreur
    3- mettre une redirection header(Location: accueil.php)
    4- enlever tout simplement le 'else'.

    je ne sais pas trop ce qui doit etre fait par rapport a l'indexation des moteurs de recherche!

    Merci
    Déjà dans le premier else, "erreur" ne s'affichera jamais si tu mets un exit juste après. Si tu veux quitter le script et en même temps afficher un message d'erreur tu peux écrire pour ton premier else : exit("erreur de requête");

    Pour le dernier else tu pourrais faire la même chose : else exit("l'accès à cette page est restreint");

    Mais tu pourrais faire aussi une redirection vers une page d'erreur personnalisée : header("Location: ma_page_erreur.php");exit;

    Par ailleurs tu pourrais également personnaliser les messages d'erreurs 403 etc. cf http://fr.wikipedia.org/wiki/Htaccess

  8. #28
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    Bonjour ABCIWEB, je n'ai pas recu de notification pour ta reponse, c'est par hasard que consulte cette page!!

    Déjà dans le premier else, "erreur" ne s'affichera jamais si tu mets un exit juste après. Si tu veux quitter le script et en même temps afficher un message d'erreur tu peux écrire pour ton premier else : exit("erreur de requête");
    au fait, je n'ai pas qu'un echo "erreur"; j'ai 2 autres instructions...

    Mais tu pourrais faire aussi une redirection vers une page d'erreur personnalisée : header("Location: ma_page_erreur.php");exit;
    justement, c'est la question que j'ai posee dans mon dernier post.
    j'utilise des pages personnalisées 404, 403 et 500 via un htaccess. et voulais justement savoir si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    else {
    	header("HTTP/1.0 403 Forbidden");
    	header("Location: /error-403.html"); 
    	exit();
    }
    etait une bonne solution. je ne sais pas si 2 headers qui se suivent est une bonne chose!!

  9. #29
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 421
    Par défaut
    Ben non, une page ne peut pas se rediriger vers deux autres pages.
    Gardes uniquement la redirection vers la page personnalisée dont tu maitrise le contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else {
    	header("Location: /error-403.html"); 
    	exit();
    }

  10. #30
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    merci pour la reponse tres rapide
    Bonne nuit

  11. #31
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    Bonsoir,
    j'aurais une autre petite question qui traite pas du meme sujet mais j'espere quand meme avoir une reponse

    je suis un peu en gallere pour gerer les dates en differents formats...
    j'ai un site bilingue voire meme trilingue:
    1- francais
    2- anglais (international)
    3- anglais (UK)
    lorsque j'extrait une date d'une bdd, j'ai un peu de mal a l'afficher en anglais et francais.
    j'ai pour l'instant un fichier de config par langue qui formate la date mais je ne vois pas trop comment l'utiliser. si avec un sprintf, vsprintf ou vprintf...
    si vous pouvez m'eclairer un peu.
    Merci infiniment

  12. #32
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    je suis peut etre pas a la bonne rubrique???

Discussions similaires

  1. Insertion PDF dans Formulaire
    Par jeff1196 dans le forum IHM
    Réponses: 14
    Dernier message: 03/03/2008, 22h55
  2. insertion pdf dans formulaire
    Par pkrvz dans le forum VBA Access
    Réponses: 0
    Dernier message: 02/03/2008, 21h33
  3. Réponses: 0
    Dernier message: 08/11/2007, 20h09
  4. Insertion GIF dans formulaire
    Par STANDBOY dans le forum IHM
    Réponses: 1
    Dernier message: 26/12/2006, 16h56
  5. Clé étrangère vide dans formulaire
    Par Shekhmet dans le forum Access
    Réponses: 6
    Dernier message: 29/05/2006, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo