Conception code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conception code

Re: Conception code

par Ryle » 10 juil. 2011, 22:13

Comment faire pour qu'il me redirige directement vers le 1 ier elseif?
Soit en ajustant la condition du elseif pour que le test soit vrai et que php exécute ce bloc, soit en réordonnant tes conditions pour qu'elles soient traitées de la plus restrictive à la moins restrictuve :)

PHP va interpréter tes tests dans l'ordre. Si la condition du IF n'est pas réalisé, il passe au premier ELSEIF, teste la condition, puis si celle-ci n'est pas réalisée, passe au ELSEIF suivant et ainsi de suite jusqu'à ce qu'il n'y ait plus de conditions :)

Conception code

par poliboolold » 10 juil. 2011, 21:13

Bonjour

Ce code est un script php permettant le traitement de l'envoie de fichier par formulaire .
La page appelante (qui a le formulaire) demande un email , et un fichier .
La table SQL correspondant est :

Code : Tout sélectionner

[sql]-- phpMyAdmin SQL Dump -- version 2.11.8.1deb5+lenny8 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Sam 09 Juillet 2011 à 11:14 -- Version du serveur: 5.0.51 -- Version de PHP: 5.2.6-1+lenny9 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `polib250634` -- -- -------------------------------------------------------- -- -- Structure de la table `formulaire` -- CREATE TABLE IF NOT EXISTS `formulaire` ( `id` int(11) NOT NULL auto_increment, `titre` varchar(255) NOT NULL, `e_mail` varchar(255) NOT NULL, `bann` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; -- -- Contenu de la table `formulaire` -- INSERT INTO `formulaire` (`id`, `titre`, `e_mail`, `bann`) VALUES (9, 'Nouveau document texte.txt', '[email protected]', 0); [/sql]

Dans mon code PHP (que je vous fournirais apres il y'a:
-un if qui vérifie si la requete renvoie un résultat (c'est a dire ce sont pour les membres qui ont déja utilisée le service , leur adresse email a été mis dans la table)
-un premier elseif qui vérifie si la requete n'a pas envoyée de réponse et si le format de l'adress email est correcte (c'est a dire que le membre n'a jamais utilisée le service)
-un deuxieme elseif qui vérifie si le format de l'adresse e-mail n'est pas correcte
-et un else qui devraint normalement jamais apparaitre

Mon problème est que si j'envoie une adresse e-mail valide (que je suis pas encore inscrit) et que j'envoie un fichier ayant la bonne extension . La premiere fois il me redirige vers le deuxieme elseif et la deuxieme fois vers le premier elseif

Comment faire pour qu'il me redirige directement vers le 1 ier elseif?


Cordialement
Voici le code:

Code : Tout sélectionner

[php] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Poliboolold-groupe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="poli2" href="style.css" /> </head> <body> <?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=********************;dbname=polib250634','polib250634','************',$pdo_options); } catch(PDOException $e) { echo '<p>Erreur PDO dans '.$e->getFile().' L.'.$e->getLine().' : <br/> '.$e->getMessage().'<br /></p>'; } ?> <div id="banniere"> </div> <div id="barreprojet"> Polibook Polipeople Polilogiciel Politribale Tchat Forum Aide Suggestions livre d'or newlester </div> <div id="corps"> <?php $actu = 1; if($actu == 1) { echo "Page web en construction (developpement de la mise en page)"; } else { echo "Poliboolold-groupe, le site multi-services"; } ?> </div> <div id=membre> <h2>espace-membre</h2> <p>Veuillez vous connecter <br/> Pour accéder a votre espace membre <br/> Service Indisponible pour le moment </p> <form method="post" action=""> <p> <label for="pseudo">Pseudo:</label> <input type="text" name="pseudo" id="pseudo" value="Pseudo"/> <br/> <label for="Motdepasse">Mot de passe:</label> <input type="password" name="Motdepasse" id="Motdepasse" value="Mot de passe"/> <br/> <input type="submit" value="Valider" /<label for="pseudo">Pseudo:</label> <br/> Pour vous inscrire , cliquez <a href="inscription.php">Ici</a> </p> </form> </div> <div id="actu"> <?php $reponse=$bdd->query("SELECT bann,id FROM formulaire WHERE e_mail='" . $_POST['e_mail'] . "'"); if( $reponse->rowCount() > 0 ) { $donnees = $reponse->fetch(); $bann=$donnees['bann']; if($bann==0 ) { // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['monfichier']['size'] <= 1000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('txt', 'docx'); if (in_array($extension_upload, $extensions_autorisees)) { /*if( !empty($_POST['e_mail']) && filter_input(INPUT_POST, 'e-mail', FILTER_VALIDATE_E_MAIL) ) {*/ if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['e_mail'])) { // On peut valider le fichier et le stocker définitivement $bri=0; $extension = strrchr(basename($_FILES['monfichier']['name']), '.'); move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'.uniqid().$extension); $reponse->closeCursor(); $req = $bdd->prepare('INSERT INTO formulaire(id, titre, e_mail, bann) VALUES(:id, :titre, :e_mail, :bann)'); $req->execute(array( 'id' => '', 'titre' => $_FILES['monfichier']['name'], 'e_mail' => $_POST['e_mail'], 'bann' => $bri )); echo "L'envoi a bien été effectué !"; } } } } } } /*}*/ elseif(!isset($bann)AND preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['e_mail']) ) { if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { if ($_FILES['monfichier']['size'] <= 1000000) { $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('txt', 'docx'); { if (in_array($extension_upload, $extensions_autorisees)) { $bri=0; $extension = strrchr(basename($_FILES['monfichier']['name']), '.'); move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'.uniqid().$extension); $reponse->closeCursor(); $req = $bdd->prepare('INSERT INTO formulaire(id, titre, e_mail, bann) VALUES(:id, :titre, :e_mail, :bann)'); $req->execute(array( 'id' => '', 'titre' => $_FILES['monfichier']['name'], 'e_mail' => $_POST['e_mail'], 'bann' => $bri )); mail($_POST['e_mail'],bonjour,bonjour); echo"noob"; } } } } } elseif(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['e_mail'])OR !isset($_FILES['monfichier'])) { //extension pas bonne header('Location: formulaire.php?param=1'); } else{ echo"Merci de resseyer"; } ?> <?php $heure=date('H'); $minute=date('i'); echo'Il est <strong>'.$heure.':'.$minute; ?> </div> <div id="pied_de_page"> <p> </p> </div> </body> </html>[/php]