Erreur 500 sur PHP

devdeb22 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
Lord Zero Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un mini code Php où il y une erreur interne mais que je n'arrive pas à identifier.

Voici mon code :

<?php
require_once 'inc/functions.php';
reconnect_from_cookie();
if(isset($_SESSION['auth'])){
header('Location: account.php');
exit();
}
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
require_once 'inc/db.php';
$req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
$req->execute(['username' => $_POST['username']],['subscribed' => $_POST['subscribed']]);
$user = $req->fetch();



if(password_verify($_POST['password'], $user->password) and $_POST['subscribed']=1 ){
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';

header('Location: account.php');
exit();
}

if(password_verify($_POST['password'], $user->password) and $_POST['subscribed']=0 ){
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
header('Location: account2.php');
exit();

}

else{
$_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
}
}
?>


Dans ce code je commence par appeler une fichier qui contient toutes les fonction.
Puis je vérifie si l'utilisateur est connecté (depuis les cookies).
Si il n'est pas logué, dans ce cas il doit saisir son identifiant et mp dans un formulaire.
Je vérifie que le champs password et username sont non-vide.
Si oui, alors j'appel la base de données

Je fais une requette préparé où je prends

Le "username"
Le "subscribed"

Puis ensuite je verifie si le password, correspond et subscrebed =1

si oui alors je dirige l'utilisateur vers une page qui s'appel account1.php

si subscrebed =0

Je dirige l'utilisateur vers une page qui s'appel account2.php

Sinon je lui affiche un message d'erreur.



Je n'arrive pas à identifier mon erreur.




2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour
Et en plus, il manque un = dans la comparaison

if(password_verify($_POST['password'], $user->password) and $_POST['subscribed']=0 ){
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Il semble également qu'il manque le session_start()
0
Lord Zero Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   115
 
Hello !

C'est ta requête préparée qui est fausse.
 $req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
$req->execute(['username' => $_POST['username']],['subscribed' => $_POST['subscribed']]);


Le fait que tu cherches un username et un mail par rapport à une même variable ne me dérange pas (:username), mais je pense que tu as mal écrit les paramètres. Pourquoi subscribed ? Il n'est pas dans la requête.

Try :
$req->execute([':username' => $_POST['username']]);

ou
$req->execute(array(':username' => $_POST['username']));

ou
$req->bindParam(':username', $_POST['username']);
$req->execute();


Cdt.
0