Page 1 sur 1

problème script inscription

Posté : 17 févr. 2021, 12:43
par nestor94
Bonjour,
Je bloque depuis plusieurs heures sur ce script qui plante.
Parse error: syntax error, unexpected '<' in C:\wamp64\www\inscri_connex_membre.php on line 50
(la ligne 50 c'est la fin du script)
<?php
if( session_id()=='' ){ session_start(); } // démarrage SESSION
// connexion a la bdd
include_once 'config.php';
unset($_SESSION['islogged']);
unset($_SESSION['pseudo']);
// --------------
// 1- INSCRIPTION
$err_inscription = array();
if(isset($_POST['inscrimembre']) )
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$pass_hache = password_hash($_POST['password1'], PASSWORD_DEFAULT);
$sexe = htmlspecialchars($_POST['sexe']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['password1']) AND !empty($_POST['password2']) AND !empty($_POST['sexe'] ))
{
$pseudolength = strlen($pseudo);
if($mail == $mail)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
if ($_POST["password1"] == $_POST["password2"])
{
// INSERT en bdd
$pdostat = $objetpdo->prepare('INSERT INTO membres (pseudo, password1, mail, sexe) VALUES(:pseudo, :password1, :mail, :sexe);');
$pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR);
$pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT),PDO::PARAM_STR);
$pdostat->bindvalue(':mail',$_POST['mail'],PDO::PARAM_STR);
$pdostat->execute();
// Mise en SESSION
$_SESSION['islogged'] = true;
$_SESSION['pseudo'] = $_POST['pseudo'];
// on redirige vers l'espace membre
header('location:membre.php');
exit();
}
else
{
$err_inscription[] = 'Les deux mots de passe sont différents.';
}
}
else
{
$err_inscription[] = 'Remplissez tous les champs obligatoires.';
}
}

Re: problème script inscription

Posté : 17 févr. 2021, 14:03
par or 1
il faut les } pour tous les if.

Re: problème script inscription

Posté : 17 févr. 2021, 16:41
par nestor94
Désolé, non. J'ai ajouté les deux accolades fermantes et manquantes et c'est toujours la même erreur.

Re: problème script inscription

Posté : 17 févr. 2021, 23:47
par nestor94
Nouvelle erreur
Notice: Undefined variable: objetpdo in C:\wamp64\www\inscri_connex_membre.php on line 27
Error: Call to a member function prepare() on null in C:\wamp64\www\inscri_connex_membre.php on line 27

Re: problème script inscription

Posté : 19 févr. 2021, 11:20
par Ryle
Salutations !

La première erreur t'indiquait effectivement un problème d'équilibre entre les parenthèses et accolades ouvertes et fermées (si tu en ouvres plus que tu n'en fermes, php va chercher jusqu'à la fin du script s'il trouve l'accolade ou la parenthèse fermante qui lui manque et t'indique une erreur en fin de script :))

Le nouveau message indique que tu fais appel à la variable $objetpdo en ligne 27 de ton script, alors que celle-ci n'a pas été définie au préalable. Cette variable étant nulle, tu ne peux pas faire appel à une de ses méthodes et le prepare() ne peut donc pas fonctionner. Il te manque quelque chose du genre " $objetpdo = new PDO(...); " avec les informations de connexion à ta base de données.

Celles-ci sont peut être dans ton script config.php, mais n'initialise pas de variable nommée $objetpdo. Il suffit dans ce cas de juste faire correspondre les deux :)

Re: problème script inscription

Posté : 19 févr. 2021, 19:07
par nestor94
merci Ryle. Correction OK par rapport au config.php.
A présent, il n'y a plus aucun message d'erreur mais il ne se passe rien une fois le formulaire inscription rempli....

Code : Tout sélectionner

<?php if( session_id()=='' ){ session_start(); } // démarrage SESSION unset($_SESSION['islogged']); unset($_SESSION['pseudo']); // connexion a la bdd include_once 'config.php'; // -------------- // 1- INSCRIPTION $err_inscription = array(); if(isset($_POST['inscrimembre']) ) { $pseudo = ($_POST['pseudo']); $mail = ($_POST['mail']); $pass_hache = password_hash($_POST['password1'], PASSWORD_DEFAULT); $sexe = ($_POST['sexe']); if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['password1']) AND !empty($_POST['password2']) AND !empty($_POST['sexe'] )) { $pseudolength = strlen($pseudo); if($mail == $mail) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { if ($_POST["password1"] == $_POST["password2"]) { // INSERT en bdd $pdostat = $bdd->prepare('INSERT INTO membres (pseudo, password1, mail, sexe) VALUES(:pseudo, :password1, :mail, :sexe);'); $pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR); $pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT),PDO::PARAM_STR); $pdostat->bindvalue(':mail',$_POST['mail'],PDO::PARAM_STR); $pdostat->execute(); // Mise en SESSION $_SESSION['islogged'] = true; $_SESSION['pseudo'] = $_POST['pseudo']; // on redirige vers l'espace membre header('location:membre.php'); exit(); } else { $err_inscription[] = 'Les deux mots de passe sont différents.'; } } else { $err_inscription[] = 'Remplissez tous les champs.'; } } } } ?>

Re: problème script inscription

Posté : 20 févr. 2021, 19:59
par nestor94
J'ai téléchargé Php Storm et ai rajouté les accolades fermantes qui manquaient.
j'ai vu en effet qu'il y avait plein de NBSP affichés entre pas mal de lignes du code!

J'ai modifié aussi le parametre BCRYPT qui n'était pas apprécié en DEFAULT.

L'inscription a fonctionné.

Code : Tout sélectionner

<?php if( session_id()=='' ) { session_start(); } // connexion a la bdd include_once 'config.php'; unset($_SESSION['islogged']); unset($_SESSION['pseudo']); // -------------- // 1- INSCRIPTION $err_inscription = array(); if(isset($_POST['inscrimembre'])) { /* Récupération des variables issues du formulaire par la méthode post*/ $pseudo = ($_POST['pseudo']); $mail = ($_POST['mail']); $pass_hache = password_hash($_POST['password1'], PASSWORD_DEFAULT ); $sexe = ($_POST['sexe']); /* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */ if(!empty($_POST['pseudo'])AND !empty($_POST['mail']) AND !empty($_POST['password1']) AND !empty($_POST['password2']) AND !empty($_POST['sexe'] )) { $pseudolength = strlen($pseudo); if ($pseudolength <= 20) { $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); $pseudoexist = $reqpseudo->fetchColumn(); if ($pseudoexist == 0) { if($mail == $mail) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute(array($mail)); $mailexist = $reqmail->fetchColumn(); if ($mailexist == 0) { if ($_POST["password1"] == $_POST["password2"]) { // INSERTION en bdd $pdostat = $bdd->prepare("INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());"); $pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR); $pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT ),PDO::PARAM_STR); $pdostat->bindvalue(':mail',$_POST['mail'],PDO::PARAM_STR); $pdostat->bindvalue(':sexe',$_POST['sexe'],PDO::PARAM_STR); $pdostat->execute(); // Mise en SESSION $_SESSION['islogged'] = true; $_SESSION['pseudo'] = $_POST['pseudo']; // on redirige vers l'espace membre header('location:membre.php'); exit(); } else { $err_inscription[] = 'TOUS LES CHAMPS SONT REQUIS.'; } } else { $err_inscription[] = 'LE PSEUDO NE DOIT PAS DEPASSER 20 CARACTERES !'; } } else { $err_inscription[] = 'CE PSEUDO EXISTE DEJA.'; } } else { $err_inscription[] = 'LES MOTS DE PASSE SONT DIFFÉRENTS !'; } } else { $err_inscription[] = 'CET EMAIL EST INVALIDE.'; } } } } ?>