Bonjour,
J'ai déjà posé la question sous la video du tuto mais par souci de visibilité je viens reposer ma question sur le forum :)

Ce que je fais

Je suis à 27 minutes sur la video ou je suis sensé pouvoir faire fonctionné mon espace register.

'
<?php

if(!empty($_POST)){

    $errors = array();

    if(empty($_POST['pseudo']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['pseudo']))

    {
        $errors['pseudo'] = "Votre pseudo n'est pas valide";
    }

    if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    {
        $errors['email'] = "Votre email n'est pas valide";
    }

    if(empty($_POST['password']) || $_POST['password'] != $_POST['repassword'])
    {
        $errors['password'] = "Votre mot de passe n'est pas valide";
    }

    if(empty($errors)){
        require_once "inc/ConnexionPDO.php";
        $req = $pdo->prepare("INSERT INTO users SET pseudo = ?, email = ?, password = ?");
        $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
        $req->execute ([$_POST['.pseudo.'], $password, $_POST['.email.']]);
        die('Le compte est bien crée');

        }

        debug($errors);

}

?>
'

Ce que j'obtiens

J'ai des messages d'erreur du type:

"Parse error: syntax error, unexpected '[', expecting ')' in /data/web/2/7/parablosphere.toile-libre.org/htdocs/register.php on line 64"

Ca fait 3 jours que je bloque là dessus et ca a tendance a me frustrer de ne pas trouver le probleme...

Merci d'avance!

3 réponses


Lartak
Réponse acceptée

Bonsoir.

J'ai déjà posé la question sous la video du tuto mais par souci de visibilité je viens reposer ma question sur le forum :)

Les commentaires concernants les tutoriels ne sont pas faits pour y exposer des demandes d'aides en cas de problème, même si ces problèmes concernent le tutoriel en question.
Il faut donc exposer les demandes d'aides dans le forum.
Concernant ton problème, je ne vois pas dans le code que tu nous montre ce qui peut causer cette erreur, sachant qu'il est dit que c'est à la ligne 64 du fichier register.php, il doit s'agir d'une partie de code qui se situe plus bas par rapport au code que tu nous montre.
En tout cas, selon l'erreur retournée, il s'agirait d'un [ que tu aurais oublié de fermer.
Par contre, j'ai relevé deux erreurs dans ton code :

$req = $pdo->prepare("INSERT INTO users SET pseudo = ?, email = ?, password = ?");
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$req->execute ([$_POST['.pseudo.'], $password, $_POST['.email.']]);
  • Il y a des points entourant les noms de champs suivants : pseudo et email
  • L'ordre des deux derniers champs est inversé, dans ta requête l'ordre est : pseudo, email et password, alors que dans l'exécution, l'ordre est : pseudo, password et email

Tu devrais donc commencer par corriger ces erreurs et ensuite montres nous le reste du code de la page register.php.
Si tu veux éviter ce genre d'inversion, tu peux utiliser la syntaxe suivante :

$req = $pdo->prepare("INSERT INTO users SET pseudo = :pseudo, email = :email, password = :password");
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$req->execute ([':pseudo' => $_POST['pseudo'], ':password' => $password, ':email' => $_POST['email']]);

De cette manière, même si l'ordre est inversé, PDO pourra s'y retrouver.
Au passage, dans le dernier code que j'ai retranscrit, j'ai corrigé la première erreur que j'ai relevé concernant les points entourant le nom des deux champs en cause.

Nhaars
Auteur

Salut!

Tout d'abord merci pour ta réponse et d'avoir pris le temps de faire la correction.

Malgré tout,j'ai tourné et retourner et même recommencer complètement depuis le début au symbole pres, mais rien n'y fait...J'ai toujours cette erreur qui s'affiche...J'ai dégagé les includes pour être sûr que le problème ne vienne pas de là, mais je reste au même point...

Je n’arrive pas a comprendre pourquoi ca merde :/

Nhaars
Auteur

ENFIN!

Le problème est résolu!!!Je viens de me rendre compte que le PHP du serveur sur lequel je uppais mes fichiers était en 5.3 ce qui mettait le bousin avec la commande password hash que j'ai résolue avec la commande CRYPT,et j'avais une erreur dans mon fichier PDO de connexion a la BDD.La variable utilisée ne correspondait pas avec ce que j'avais dans mon register.php......................La loose quoi....

Encore merci de t'être penché sur le problème :)