Erreur 500

Résolu
sam587 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   327
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   327
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ligne 29 et 30 de mon code...
$req d'un côté .... $requete de l'autre. .. erreur non ?
0