Erreur 500 sur PHP

Fermé
devdeb22 Messages postés 28 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 9 février 2020 - 29 mai 2018 à 23:48
Lord Zero Messages postés 459 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 15 juin 2018 - 11 juin 2018 à 16:05
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 38309 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
30 mai 2018 à 01:39
0
jordane45 Messages postés 38309 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
30 mai 2018 à 07:09
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 38309 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
30 mai 2018 à 07:10
Il semble également qu'il manque le session_start()
0
Lord Zero Messages postés 459 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 15 juin 2018 115
11 juin 2018 à 16:05
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