Aide pour un script php
Je suis en train de créer un forum grace au site de zéro, mais dan la page de vérification pour l'inscription j'ai une erreur:
Parse error: syntax error, unexpected '<' in /home/key/public_html/ch/forum/registerok.php on line 29
Et voici le code de la page:
registerok.php
<?php
//Cette fonction doit être appelée avant tout code html
session_start();
//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Index du forum";
include("debut.php");
?>
<body>
<div id="banniere"></div>
<?php
//Maintenant, on se connecte à la base de données
include("identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$pseudo_erreur1 = NULL;
$pseudo_erreur2 = NULL;
$mdp_erreur = NULL;
$email_erreur1 = NULL;
$email_erreur2 = NULL;
$msn_erreur = NULL;
$signature_erreur = NULL;
$avatar_erreur = NULL;
$avatar_erreur1 = NULL;
$avatar_erreur2 = NULL;
$avatar_erreur3 = NULL;
<?php
//On récupère les variables
$i = 0;
$temps = time();
$signature = mysql_real_escape_string($_POST['signature'], ENT_QUOTES));
$pseudo = mysql_real_escape_string($_POST['pseudo']);
$email = mysql_real_escape_string($_POST['email']);
$msn = mysql_real_escape_string($_POST['msn']);
$website = mysql_real_escape_string($_POST['website']);
$localisation = mysql_real_escape_string($_POST['localisation']);
$pass = md5($_POST['password']);
$confirm = md5($_POST['confirm']);
//Vérification du pseudo
$nombrepseudo = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'"'), 0);
if($nombrepseudo != 0)
{
$pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
$i++;
}
if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
{
$pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
$i++;
}
//Vérification du mdp
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
$i++;
}
?>
<?php
//Vérification de l'adresse email
//Il faut que l'adresse email n'ait jamais été utilisée
$nombremail = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_email = "'.$email.'"'), 0);
if ($nombremail != 0)
{
$email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
$i++;
}
//On vérifie la forme maintenant
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
{
$email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
$i++;
}
//Vérification de l'adresse MSN
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
{
$msn_erreur = "Votre adresse MSN n'a pas un format valide";
$i++;
}
//Vérification de la signature
if (strlen($signature) > 200)
{
$signature_erreur = "Votre signature est trop longue";
$i++;
}
?>
<?php
//Vérification de l'avatar :
if (!empty($_FILES['avatar']['size']))
{
//On définit les variables :
$maxsize = 10024; //Poid de l'image
$maxwidth = 100; //Largeur de l'image
$maxheight = 100; //Longueur de l'image
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
if ($_FILES['avatar']['error'] > 0)
{
$avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
}
if ($_FILES['avatar']['size'] > $maxsize)
{
$i++;
$avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong>)";
}
$image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$i++;
$avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
}
$extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
$i++;
$avatar_erreur3 = "Extension de l'avatar incorrecte";
}
}
?>
<div id="corps_forum">
<a href ="./index.php">Index du forum</a> / <a href="./register.php">Inscription</a>
<?php
if ($i == 0) // Si i est vide, il n'y a pas d'erreur
{
echo'<h1>Inscription terminée</h1>';
echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>';
echo'<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
if (isset($_FILES['avatar']['size']))
{
//On déplace l'avatar
$avatar = time();
$nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
$avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
}
//On balance le tout dans notre table
mysql_query('
INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,
membre_msn, membre_siteweb, membre_avatar,
membre_signature, membre_localisation, membre_inscrit,
membre_derniere_visite)
VALUES ("'.$pseudo.'" , "'.$pass.'" , "'.$email.'" ,
"'.$msn.'" , "'.$website.'" , "'.$nomavatar.'" ,
"'.$signature.'" , "'.$localisation.'" , "'.$temps.'" ,
"'.$temps.'" ) ') or die(mysql_error());
//Et on définit les variables de sessions
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = mysql_insert_id();
$_SESSION['level'] = 2;
}
else
{
echo'<h1>Inscription interrompue</h1>';
echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
echo'<p>'.$i.' erreur(s)</p>';
echo'<p>'.$pseudo_erreur1.'</p>';
echo'<p>'.$pseudo_erreur2.'</p>';
echo'<p>'.$mdp_erreur.'</p>';
echo'<p>'.$email_erreur1.'</p>';
echo'<p>'.$email_erreur2.'</p>';
echo'<p>'.$msn_erreur.'</p>';
echo'<p>'.$signature_erreur.'</p>';
echo'<p>'.$avatar_erreur.'</p>';
echo'<p>'.$avatar_erreur1.'</p>';
echo'<p>'.$avatar_erreur2.'</p>';
echo'<p>'.$avatar_erreur3.'</p>';
echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
}
mysql_close();
?>
</div>
</body>
</html>
Cordialement, Kévin
Configuration: Windows Vista Opera 9.63
32 réponses
La question porte sur une erreur de syntaxe PHP lors de l’inscription, affichant Parse error: syntax error, unexpected '<' dans registerok.php à la ligne 29. Les échanges pointent des causes potentielles: une parenthèse en trop dans l’appel à mysql_real_escape_string pour le champ signature et l’utilisation incorrecte de ENT_QUOTES, ainsi que des balises PHP et HTML mal imbriquées. Plusieurs internautes recommandent d’indiquer clairement les lignes 28 et 29 et d’éviter les extraits html-énoncés dans le code, car le problème peut venir d’un élément situé juste au-dessus. Concrètement, une solution pratique consiste à corriger l’appel en $signature = mysql_real_escape_string($_POST['signature']); et à retirer l’excès de parenthèses, puis à vérifier la fermeture des balises PHP et des blocs HTML.
-
le mieux alor cerait de donner une capture d'ecrant
-
je te donne le code de toute la page:
<?php //Cette fonction doit être appelée avant tout code html session_start(); //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php $titre = "Voir un forum"; include("debut.php"); ?> <body> <div id="banniere"></div> <?php //Maintenant, on se connecte à la base de données include("identifiants.php"); mysql_connect($adresse, $nom, $motdepasse); mysql_select_db($database); //On récupère la valeur de f $forum = (int) $_GET['f']; //A partir d'ici, on va compter le nombre de messages //pour n'afficher que les 25 premiers $requete1 = mysql_query("SELECT forum_name, forum_topic, auth_view, auth_topic FROM forum_forum WHERE forum_id = '".$forum."'") or die (mysql_error()); $data1 = mysql_fetch_assoc($requete1); $totalDesMessages = $data1['forum_topic'] + 1; $nombreDeMessagesParPage = 25; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); ?> <div id="corps_forum"> <?php echo'<a href ="./index.php">Index du forum</a> / <a href="./voirforum.php?f='.$forum.'">'.stripslashes(htmlspecialchars($data1['forum_name'])).'</a>'; if (isset($_SESSION['pseudo'])) // Si le membre est connecté { //Voici les options echo'<p>Vous êtes connecté en tant que <a href="./voirprofil.php?m='.intval($_SESSION['id']).'&action=consulter"> '.stripslashes(htmlspecialchars($_SESSION['pseudo'])).'</a><br /> <a href="./voirprofil.php?action=modifier">Modifier mon profil</a><br /> <a href="./messagesprives.php">Consulter mes messages privés</a><br /> <a href ="./deconnexion.php">Se déconnecter</a><br /></p>'; } // Sinon, on propose de se connecter ou de s'enregistrer else { echo'<p>Vous n êtes pas connecté <br /> <a href="./connexion.php">Se connecter</a><br /> <a href="./register.php">Pas encore inscrit ?</a><br /></p>'; } //Nombre de pages if (isset($_GET['page'])) { $page = intval($_GET['page']); } else { $page = 1; } //On affiche les pages 1-2-3, etc. echo '<p>Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { if ($i == $page) //On ne met pas de lien sur la page actuelle { echo $i; } else { echo ' <a href="voirforum.php?f='.$forum.'&page='.$i.'">'.$i.'</a>'; } } echo '</p>'; $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; //Le titre du forum echo '<h1>'.stripslashes(htmlspecialchars($data1['forum_name'])).'</h1><br /><br />'; //Et le bouton pour poster echo'<a href="./poster.php?action=nouveautopic&f='.$forum.'"> <img src="./images/nouveau.gif" alt="Nouveau topic" title="Poster un nouveau topic" /></a>'; ?> <?php //On prend tout ce qu'on a sur les Annonces du forum $requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post, Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur WHERE topic_genre = "Annonce" AND forum_topic.forum_id = "'.$forum.'" ORDER BY topic_last_post DESC'); ?> <? //On lance notre tableau seulement s'il y a des requêtes ! if (mysql_num_rows($requete3) > 0) { ?> <table> <tr> <th><img src="./images/annonce.gif" alt="Annonce" /></th> <th class="titre"><strong>Titre</strong></th> <th class="nombremessages"><strong>Réponses</strong></th> <th class="nombrevu"><strong>Vus</strong></th> <th class="auteur"><strong>Auteur</strong></th> <th class="derniermessage"><strong>Dernier message</strong></th> </tr> <?php //On commence la boucle while ($data3 = mysql_fetch_assoc($requete3)) { //Pour chaque topic : //Si le topic est une annonce on l'affiche en haut //mega echo de bourrain pour tout remplir echo'<tr><td><img src="./images/annonce.gif" alt="Annonce" /></td> <td id="titre"><strong>Annonce : </strong> <strong><a href="./voirtopic.php?t='.$data3['topic_id'].'" title="Topic commencé à '.date('H\hi \l\e d M,y',$data3['topic_time']).'"> '.stripslashes(htmlspecialchars($data3['topic_titre'])).'</a></strong></td> <td class="nombremessages">'.$data3['topic_post'].'</td> <td class="nombrevu">'.$data3['topic_vu'].'</td> <td><a href="./voirprofil.php?m='.$data3['topic_createur'].' &action=consulter"> '.stripslashes(htmlspecialchars($data3['membre_pseudo_createur'])).'</a></td>'; //Selection dernier message $nombreDeMessagesParPage = 15; $nbr_post = $data3['topic_post'] +1; $page = ceil($nbr_post / $nombreDeMessagesParPage); echo '<td class="derniermessage">Par <a href="./voirprofil.php?m='.$data3['post_createur'].' &action=consulter"> '.stripslashes(htmlspecialchars($data3['membre_pseudo_last_posteur'])).'</a><br /> A <a href="./voirtopic.php?t='.$data3['topic_id'].'&page='.$page.'#p_'.$data3['post_id'].'">'.date('H\hi \l\e d M y',$data3['post_time']).'</a></td></tr>'; } ?> </table> <?php ?> <? //On prend tout ce qu'on a sur les topics normaux du forum $requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post, Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur WHERE topic_genre <> "Annonce" AND forum_topic.forum_id = "'.$forum.'" ORDER BY topic_last_post DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage .'') or die (mysql_error()); if (mysql_num_rows($requete3) > 0) { ?> <table> <tr> <th><img src="./images/message.gif" alt="Message" /></th> <th class="titre"><strong>Titre</strong></th> <th class="nombremessages"><strong>Réponses</strong></th> <th class="nombrevu"><strong>Vus</strong></th> <th class="auteur"><strong>Auteur</strong></th> <th class="derniermessage"><strong>Dernier message </strong></th> </tr> <?php //On lance la boucle while ($data3 = mysql_fetch_assoc($requete3)) { //Ah bah tiens... re vla l'echo de fou echo'<tr><td><img src="./images/message.gif" alt="Message" /></td> <td class="titre"> <strong><a href="./voirtopic.php?t='.$data3['topic_id'].'" title="Topic commencé à '.date('H\hi \l\e d M,y',$data3['topic_time']).'"> '.stripslashes(htmlspecialchars($data3['topic_titre'])).'</a></strong></td> <td class="nombremessages">'.$data3['topic_post'].'</td> <td class="nombrevu">'.$data3['topic_vu'].'</td> <td><a href="./voirprofil.php?m='.$data3['topic_createur'].' &action=consulter"> '.stripslashes(htmlspecialchars($data3['membre_pseudo_createur'])).'</a></td>'; //Selection dernier message $nombreDeMessagesParPage = 15; $nbr_post = $data3['topic_post'] +1; $page = ceil($nbr_post / $nombreDeMessagesParPage); echo '<td class="derniermessage">Par <a href="./voirprofil.php?m='.$data3['post_createur'].' &action=consulter"> '.stripslashes(htmlspecialchars($data3['membre_pseudo_last_posteur'])).'</a><br /> A <a href="./voirtopic.php?t='.$data3['topic_id'].'&page='.$page.'#p_'.$data3['post_id'].'">'.date('H\hi \l\e d M y',$data3['post_time']).'</a></td></tr>'; } ?> </table> <?php } else //S'il n'y a pas de message { echo'<p>Ce forum ne contient aucun sujet actuellement</p>'; } ?> </div> </body></html> -
Contributeurca signifie qu' il y a soit une parenthese, un guillemet ou un point virgule manquant dans la page
-
quand je fait comme tu dis j'ai ça:
Parse error: syntax error, unexpected $end in /home/key/public_html/ch/forum/voirforum.php on line 231
et il y à ça à la linge:</body></html>
Voici tout le code car moi je n'y comprend plus rien.. -
Contributeuren meme temps si tu enleves tout tu risques d' avoir des probleme, cette requete est necessaire, fais ce que je te dis ca ira mieux.
-
j'ai enlevé cette ligne et il n'y a plus de probleme
//On lance notre tableau seulement s'il y a des requêtes ! if (mysql_num_rows($requete3) > 0) { ?> -
Contributeur$requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post,
Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic
LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur
LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur
WHERE topic_genre = "Annonce" AND forum_topic.forum_id = "'.$forum.'"
ORDER BY topic_last_post DESC');
?>
------------------------------------------------------------------------>>>>>>>>>RAJOUTE ICI >>><?php
//On lance notre tableau seulement s'il y a des requêtes !
if (mysql_num_rows($requete3) > 0)
{
?> -
ok,
ça commence comme ça:<?php //On prend tout ce qu'on a sur les Annonces du forum $requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post, Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur WHERE topic_genre = "Annonce" AND forum_topic.forum_id = "'.$forum.'" ORDER BY topic_last_post DESC'); ?> //On lance notre tableau seulement s'il y a des requêtes ! if (mysql_num_rows($requete3) > 0) { ?> <table> <tr> <th><img src="./images/annonce.gif" alt="Annonce" /></th> <th class="titre"><strong>Titre</strong></th> <th class="nombremessages"><strong>Réponses</strong></th> <th class="nombrevu"><strong>Vus</strong></th> <th class="auteur"><strong>Auteur</strong></th> <th class="derniermessage"><strong>Dernier message</strong></th> </tr> -
ContributeurY ' a rien avant????
si y' a quelque chose avant, montre le moi, sinon rajoute <?php (seulement si y' a rien avant sinon conflit):
<?php
//On lance notre tableau seulement s'il y a des requêtes !
if (mysql_num_rows($requete3) > 0)
{
?> -
Voilà:
//On lance notre tableau seulement s'il y a des requêtes ! if (mysql_num_rows($requete3) > 0) { ?> <table> <tr> <th><img src="./images/annonce.gif" alt="Annonce" /></th> <th class="titre"><strong>Titre</strong></th> <th class="nombremessages"><strong>Réponses</strong></th> <th class="nombrevu"><strong>Vus</strong></th> <th class="auteur"><strong>Auteur</strong></th> <th class="derniermessage"><strong>Dernier message</strong></th> </tr> -
Contributeurtu a du enlever une balise d' entrée <?php juste avant la ligne qu' on voit. C' est un commentaire donc trouve cette ligne et copie moi le morceau de code ici
-
c'est ça en faite:
http://www.key-themes.com/images/erreur5.gif
le forum est ici, il n'y a pas encore toute les pages:
http://www.key-themes.com/ch/forum -
Contributeurj' ai ete vori directement ton site, parce que ca va aller plus vite.
Sois plus précis stp, tu parles de l' image qui ne s' affiche pas?
http://www.key-themes.com/images/
il n' y a pas d' annonces.gif dans ton dossier image
je ne vois pas le code pour "nouveau message" mais j' imagine qu' il n' y pas de nouveau.gif non plus -
Ok,
quand j'essaie de voir un forum:
http://www.key-themes.com/images/erreur3.gif
code:
http://www.key-themes.com/images/erreur4.gif -
Salut
Efface la ligne 29 : <?php
Voilà ton erreur en plus petit ;) :<?php <?php // ton script ?>
Edit: Désolé, j'avais pas lu le topic avant :p -
Contributeurnon je suis desolé, sinon je n' ai pas fini, continu de poster tes problemes dans ce forum. J' ai une société a gerer et deja je ne devrai pas etre la, donc c' est deja pas mal tu a un souci de resolu, mais je reste dans le coin : pour la suite :D
-
Oui, c'est la solution.
Merci.
Vous auriez une adresse mail ou msn? car j'aurais encor besoin d'aide pour la suite svp.
Cordialement -
Contributeurenleve ,ENT_QUOTE pour voir
-
c'est arrangé mais maintenant j'ai ça:
Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in /home/key/public_html/ch/forum/registerok.php on line 34
code:
http://www.key-themes.com/images/erreur1.gif -
Contributeurposte tout le code parce que ce que tu as mis ne suffit pas.
- 1
- 2