Page 1 sur 1

Problèmes codes

Posté : 05 juil. 2011, 20:25
par poliboolold
Voila je voulais faire un formulaire d'envoie de fichier
et que si le champ bann vaut 1 =bann, 0=pas banni

Code php:

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 { $bdd = new PDO('mysql:host=***********;dbname=*********','********','*****'); } catch(Exception $e) { die('Erreur : ' . $e->getMessage()); } $reponse=$bdd->query('SELECT bann,id FROM formulaire WHERE e_mail=\'$_POST[\'e_mail\']\''); ?> <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="Mot de passe">Mot de passe:</label> <input type="password" name="Mot de passe" 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 $donnees = $reponse->fetch(); $bann=$donnees['bann']; if(($bann==0 OR !isset($bann)) { // 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)) { // On peut valider le fichier et le stocker définitivement $extension = strrchr(basename($_FILES['monfichier']['name']), '.'); move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'.uniqid().$extension); echo "L'envoi a bien été effectué !"; } } } } else { //extension pas bonne header('Location: formulaire.php?param=1'); } ?> <?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]
Table SQL:

Code : Tout sélectionner

[sql]-- phpMyAdmin SQL Dump -- version 2.11.8.1deb5+lenny8 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mar 05 Juillet 2011 à 20:20 -- 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=1 ; -- -- Contenu de la table `formulaire` -- [/sql]
Parse error:Error : not allowed block by ms

Merci d'avance :wink:

Re: Problèmes codes

Posté : 05 juil. 2011, 21:53
par Ryle
Je ne connais pas cette erreur... peut être qu'avec le numéro de ligne il serait plus facile de situer l'erreur dans ton code...

A vue de nez, dans les points qui ne vont pas :
$reponse=$bdd->query('SELECT bann,id FROM formulaire WHERE e_mail=\'$_POST[\'e_mail\']\'');
// ça ne fonctionnera pas, il vaut mieux sortir des les variables des chaines
$reponse=$bdd->query("SELECT bann,id FROM formulaire WHERE e_mail='" . $_POST['e_mail'] . "'");
C'est peut être ça qui génère ton erreur qui serait liée à une erreur sql ?
$bann=$donnees['bann'];
if(($bann==0 OR !isset($bann)) // le isset ne sert à rien ici, la variable $bann est forcément définie, puisque tu l'a déclaré juste au dessus
 pathinfo($_FILES['monfichier']['name']); 
En principe pathinfo() prend en argument le chemin d'un fichier sur le disque, là tu lui passes le nom du fichier uploadé qui n'est pas encore sur le serveur... à voir si ce n'est pas ça qui cause ton erreur..
   $heure=date(H);
   $minute=date(i);
// Pour éviter que php n'aille à la recherche des constantes H et i qui n'existent pas, il vaudrait mieux mettre celles-ci entre apostrophes/guillemets pour qu'il les considère directement comme des chaines :)

Re: Problèmes codes

Posté : 06 juil. 2011, 00:14
par poliboolold
Je t'aurait bien donné la ligne de l'erreur, mais le parse error ne l'indiquait pas :wink:

J'ai résolu la chose apparament ca devait etre sur le isset avec $bann je l'ai remplacée par !isset de $donnees['bann'].
Y'a une petite faute qui t'avait échappé : une parenthese de trop (au début) dans le if :mrgreen:

En tout cas merci

Edit new problème:
maintenant que j'ai rajoutez un if pour vérifier si l'e-mail envoyer est bien correct (grace aux expressions régulieres) . J'ai pas de parse error: mais on peut lui envoyer un e-mail vide et il reste dans le if

new 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 { $bdd = new PDO('mysql:host=*************;dbname:**************','**************','*******'); } catch(Exception $e) { die('Erreur : ' . $e->getMessage()); } $reponse=$bdd->query("SELECT bann,id FROM formulaire WHERE e_mail='" . $_POST['e_mail'] . "'"); ?> <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="Mot de passe">Mot de passe:</label> <input type="password" name="Mot de passe" 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 $donnees = $reponse->fetch(); $bann=$donnees['bann']; if($bann==0 OR !isset($donnees['bann'])) { // 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(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 $extension = strrchr(basename($_FILES['monfichier']['name']), '.'); move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'.uniqid().$extension); echo "L'envoi a bien été effectué !"; } } } } } else { //extension pas bonne header('Location: formulaire.php?param=1'); } ?> <?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]

Re: Problèmes codes

Posté : 06 juil. 2011, 08:01
par xTG
Faut vérifier les données avant de les exploiter.
if( !empty($_POST['email']) && filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL) )
{
  // On fait la requête
}
else
  echo 'email incorrect';
Et il faut aussi vérifier que ta requête te renvoie quelque chose avant de tenter de récupérer ses valeurs.
$resultat = $pdo->query('.....');
if( $resultat->rowCount() > 0 )
{
  // Il y a des résultats
}
else
  echo 'aucun résultat.',

Re: Problèmes codes

Posté : 06 juil. 2011, 10:45
par poliboolold
J'ai un nouveau parse error:
Error not alloweb block by ms

New 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 { $bdd = new PDO('mysql:host=***********;dbname=*******','**********','********'); } catch(Exception $e) { die('Erreur : ' . $e->getMessage()); } $reponse=$PDO->query("SELECT bann,id FROM formulaire WHERE e_mail='" . $_POST['e_mail'] . "'"); ?> <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="Mot de passe">Mot de passe:</label> <input type="password" name="Mot de passe" 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 if( $resultat->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 $extension = strrchr(basename($_FILES['monfichier']['name']), '.'); move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'.uniqid().$extension); echo "L'envoi a bien été effectué !"; } } } } } } } else { //extension pas bonne header('Location: formulaire.php?param=1'); } ?> <?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]
Merci

Re: Problèmes codes

Posté : 06 juil. 2011, 13:43
par xTG
Quand on recherche cette erreur sur le net on tombe sur tout un tas de message indiquant que c'est un problème de configuration du serveur.
Par contre j'ai pas trouvé une seule réponse détaillant plus... On indique aux personnes de contacter leur hébergeur et puis plus de retour.