Erreur 500

Résolu/Fermé
sam587 Messages postés 256 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 28 janvier 2016 - Modifié par sam587 le 7/01/2016 à 01:13
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 8 janv. 2016 à 16:47
Salut, je suis novice dans le php et je coince ici:
J'ai ce code, qui me semble bon.
Il s'agît de la partie traitement serveur pour se connecter à une session en vérifiant les informations dans la BDD, rien de très complexe.
Mais mon code me génère une erreur 500 lors de l'envoie du formulaire de connexion.
<?php
if (isset($_POST['connexion'])) 
{
 $pseudo = htmlspecialchars($_POST['pseudo']);
 $mdp = htmlspecialchars($_POST['mdp']);
 $req = $bdd->prepare("SELECT id FROM membres WHERE login=':pseudo' AND pass=':mdp'");
 $requete->execute(array($pseudo, $mdp));

 $resultat = $req->fetch();

 if (!$resultat)
 {
  echo 'Mauvais identifiant ou mot de passe !';
 }
 else
 {
  session_start();
  $_SESSION['id'] = $resultat['id'];
  $_SESSION['pseudo'] = $pseudo;
  header ('Location: index.php');
 }
}
?>


Voyez-vous des erreurs de syntaxes ou autre là dedans? Car de mon côté je ne trouve rien. Merci d'avance.

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
7 janv. 2016 à 10:15
Bonjour,

Tu as des quotes en trop dans ta requête.

Pour trouver les erreurs... il faut ajouter un "error_reporting" en début de ton script et jouer avec des TRY / CATCH pour intercepter les erreurs.

Voici ton code corrigé et remis en forme correctement :
<?php

//Pour afficher les erreurs php
error_reporting(E_ALL);

//Démarrage des SESSION (avant TOUTE autre chose )
  session_start();


//récupération "propre" des variables :
$pseudo = isset($_POST['pseudo']) ? htmlspecialchars($_POST['pseudo']): NULL;
$mdp = isset($_POST['mdp']) ? htmlspecialchars($_POST['mdp']): NULL;

if ($pseudo && $mdp) {

	try{
	 $sql = "SELECT id FROM membres WHERE login=:pseudo AND pass=:mdp";
	 $params = array(":pseudo"=>$pseudo,":mdp"=> $mdp);
	 $req = $bdd->prepare($sql);
	 $requete->execute($params);
	 $resultat = $req->fetch();
	}catch(Exception $e) {
		//en cas de problème dans la requête
		 echo "<pre><br>".$e->getMessage()."<br>";
		 echo "<u>Requete :</u>".$sql;
		 echo "Params :<br>";
		 print_r($params);
		 echo "</pre>";
		
	}

 if (!$resultat) {
  echo 'Mauvais identifiant ou mot de passe !';
 } else {
  $_SESSION['id'] = $resultat['id'];
  $_SESSION['pseudo'] = $pseudo;
  header ('Location: index.php');
 }
}
?>

0
sam587 Messages postés 256 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 28 janvier 2016 327
Modifié par sam587 le 7/01/2016 à 11:45
Salut merci pour la réponse rapide, j'ai donc utilisé ta correction du code mais le résultat reste le même. Je suis assez débutant, comment procéder pour récupérer les erreurs et voir ce qui cloche?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
7 janv. 2016 à 11:56
Désactive la redirection (le header) en commentant la ligne.
je pense que ça vient de là.
Commence par ça:

<?php

//Pour afficher les erreurs php
error_reporting(E_ALL);

//Démarrage des SESSION (avant TOUTE autre chose )
  session_start();


//récupération "propre" des variables :
$pseudo = isset($_POST['pseudo']) ? htmlspecialchars($_POST['pseudo']): NULL;
$mdp = isset($_POST['mdp']) ? htmlspecialchars($_POST['mdp']): NULL;

if ($pseudo && $mdp) {

	try{
	 $sql = "SELECT id FROM membres WHERE login=:pseudo AND pass=:mdp";
	 $params = array(":pseudo"=>$pseudo,":mdp"=> $mdp);
	 $req = $bdd->prepare($sql);
	 $requete->execute($params);
	 $resultat = $req->fetch();
	}catch(Exception $e) {
		//en cas de problème dans la requête
		 echo "<pre><br>".$e->getMessage()."<br>";
		 echo "<u>Requete :</u>".$sql;
		 echo "Params :<br>";
		 print_r($params);
		 echo "</pre>";
		
	}

 if (!$resultat) {
  echo 'Mauvais identifiant ou mot de passe !';
 } else {
  $_SESSION['id'] = $resultat['id'];
  $_SESSION['pseudo'] = $pseudo;
   //header ('Location: index.php');
 }
}
?>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
7 janv. 2016 à 11:57
De plus... dans ton code... je ne vois aucune connexion à la BDD ....
n'aurais tu pas oublié d'inclure ton fichier te connexion ?
un truc du genre :
require_once "connexionBdd.php";
0
sam587 Messages postés 256 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 28 janvier 2016 327
7 janv. 2016 à 18:52
J'ai retiré la redirection mais toujours la même chose, erreur 500 lors de l'envoie.
Pour la connexion à la BDD j'utilise ça: include('config.php') et (je pense) que ça fonctionne jusqu'ici.
Sinon j'ai tenté de trouver la partie qui génère l'erreur, en retirant ce bout du code :
try{
$sql = "SELECT * FROM membres WHERE login=:pseudo AND pass=:mdp";
$params = array(":pseudo"=>$pseudo,":mdp"=> $mdp);
$req = $bdd->prepare($sql);
$requete->execute($params);
$resultat = $req->fetch();
}
catch(Exception $e) {
//en cas de problème dans la requête
echo "<pre><br>".$e->getMessage()."<br>";
echo "<u>Requete :</u>".$sql;
echo "Params :<br>";
print_r($params);
echo "</pre>";

}

Ça "fonctionne" dans le sens où je n'ai pas l'erreur, par contre je n'arrive pas à trouver la ligne source de l'erreur.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
7 janv. 2016 à 19:19
Ligne 29 et 30 de mon code...
$req d'un côté .... $requete de l'autre. .. erreur non ?
0