Problème avec les requêtes

Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code.

J'ai bien recopier le code pour Espace membre refactoring mais je rencontre des problèmes concernant lesrequêtes préparées et les execute:

Register.php

1<?php
2 require_once 'inc/functions.php';
3 session_start();
4 if(!empty($_POST)){
5
6 $errors = array();
7 require_once 'inc/db.php';
8
9 if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])){
10 $errors['username'] = "Votre pseudo n'est pas valide (alphanumérique)";
11} else {
12 $req = $pdo->prepare('SELECT id FROM users WHERE username = ?');
13 $req->execute([$_POST['username']]);
14 $user = $req->fetch();
15 if($user){
16 $errors['username'] = 'Ce pseudo est déjà pris';
17 }
18}
19
20 if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
21 $errors['email'] = "Votre email n'est pas valide";
22 } else {
23 $req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
24 $req->execute([$_POST['email']]);
$user = $req->fetch();
`

Login.php

8 if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
   9  require_once 'inc/db.php';
    10 $req = $pdo->prepare('SELECT *** FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
    ****11 $req->execute(['username' => $_POST['username']]);
                  12 $user = $req->fetch();
                 13 if(password_verify($_POST['password'], $user->password)){
                 14 $_SESSION['auth'] = $user;
                15 $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
               16 if($_POST['remember']){
              17 $remember_token = str_random(250);
    ****18 $pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
    19 setcookie('remember', $user->id . '==' . $remember_token . sha   
   20($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7);

Après plusieurs modifications, j'ai donc repris le code source tel quel
mais à chaque fichier j'ai les mêmes erreurs: 
Register.php:
erreur à la ligne 13 et 24 (requêteexecute)
Dans Login.php c'est ligne 11 (erreur requête execute et à la ligne 18 requête préparée!Dans les fichiers functions.php ligne 35, fichier account.php ligne12 (requête préparée) Fichier confirm.php ligne 6 et 11 fichier forget lignes 6 et 11 et fichier reset.php lignes 6 et 12 qui on toutes trait à requêtes execute et préparée.
Je ne vois pas où est l'erreur!
Merci d'avance

5 Réponse

40917
,

bonjour,
et quel est cette erreur ?

Default
,

Voici:
Warning: PDOStatement::execute() expects at most 1 parameter, 6 given in C:\wamp64\www\Membres\register.php on line 40
$req->execute($_Post['Nom'],$_Post['Prenom'],$_POST['username'], $password, $_POST['email'], $token);

Call Stack

Default
,

Salut,
La fonction execute ne prend qu'un seul paramètre qui est un tableau.
Voici coment tu dois utiliser ta fonction execute dans ce cas:
$req->execute(array($_Post['Nom'],$_Post['Prenom'],$_POST['username'], $password, $_POST['email'], $token ));

Tu trouveras plus d'informations à ce sujet sur https://www.php.net/manual/fr/pdostatement.execute.php

40917
,

Donc tu as une erreur dans ta requête associé a ce execute
Il nous faudrait cette requête.
On pourrait avoir les lignes 26 à 40 de register ?

Default
,

ça a l'air bien pourtant... Si tu regardes liteblue la source générée, ça a le bon format