Impossible de traiter cette demande via localhost à l'heure actuelle. HTTP ERROR
Taijin
Messages postés
55
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, hier j'ai crée un système d'inscription et de connexion sur mon site internet avec des pages php (j'utilise MAMP). J'ai crée une page d'inscription et une page de connexion, quand je clique dessus, tout se passe bien, les deux pages s'ouvrent correctement, cependant lorseque je tente une connexion ou une inscription cela m'affiche une page avec écrit "Impossible de traiter cette demande via localhost à l'heure actuelle. HTTP ERROR"

Merci beaucoup et bonne soirée

Merci beaucoup et bonne soirée
5 réponses
-
Bonjour,
Une erreur 500... c'est une erreur serveur.
Ce qui laisse donc présager une erreur dans ton code php...
et pour pouvoir t'aider ...Il faut que tu nous le montres..
NB: Pour poster ton code sur le forum, tu devras utiliser les BALISES DE CODE.
Explications, à lire ENTIEREMENT, disponibles ici:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
-
Cela ne serait-il pas plus simple que j'envoie des captures d'écran des mes pages car pour mon système d'inscription et de connexion je dispose de 7 pages?
-
non ça ne sera pas plus simple ... car ça ne nous permet pas de copier/coller le code si on doit t'aider à le corriger.
Sachant que, pour l'instant, seul le fichier qui retourne l'erreur nous est utile...
connexion.php- D'accord excusez moi, voici le code de ma page connexion .php
<?php session_start(); require_once 'config.php'; if(isset($_POST['email']) && isset($_POST['password'])) { $email = htmlspecialchars($_POST['email']); $password = htmlspecialchars($_POST['password']); $check = bdd->prepare('SELECT pseudo, email, password FROM utilisateur WHERE email=?'); $check->execute(array($email)); $data = $check->fetch(); $row = $check->rowCount(); if($row ==1) { if(filter_var($email, FILTER_VALIDATE_EMAIL)) { $password = hash('sha256', $password); if($data['password']===$password) { $_SESSION['user'] = $data['pseudo']; header('Location:landing.php'); }else header('Location:index.php?login_err=password'); }else header('Location:index.php?login_err=email'); }else header('Location:index.php?login_err=already'); }else header('Location:index.php'); ?>
-
-
htmlspecialchars ne s'utilise que pour de l'affichage.. jamais pour le traitement des données à mettre en bdd
pour hasher le password, il faut désormais utiliser les fonctions password_hash($password, $algo) ( et password_verify($password, $hash) pour vérifier qu'il est ok')
rowCount(); ne s'utilise pas pour des requêtes de type "select" ( voir la doc de php à ce sujet si besoin )
Tu avais oublié un $ devant le nom de la variable bdd dans ton prepare
Code corrigé :
<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'config.php'; // récupération propre des variables avant de les utiliser $email = !empty($_POST['email']) ? $_POST['email'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; if ($email && $password) { try { $check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateur WHERE email=?'); $check->execute(array($email)); $data = $check->fetch(); } catch (Exception $e) { echo "Erreur dans la requête : " . $e->getMessage(); } if (!empty($data)) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { if (password_verify($password, $data['password'])) { $_SESSION['user'] = $data['pseudo']; header('Location:landing.php'); exit; // toujours mettre un exit après une redirection } else { header('Location:index.php?login_err=password'); exit; // toujours mettre un exit après une redirection } } else { header('Location:index.php?login_err=email'); exit; // toujours mettre un exit après une redirection } } else { header('Location:index.php?login_err=already'); exit; // toujours mettre un exit après une redirection } } else { header('Location:index.php'); exit; // toujours mettre un exit après une redirection } ?>
-
Bonjour, merci beaucoup pour votre réponse, j'ai bien appliqué le nouveau code cependant cela me mets toujours le même message...
J'ai également une deuxième question: je possède du "htmlspecialchars" dans quasiment toutes mes pages PHP, j'ai cru comprendre que dans mes deux pages permettant un affichage cela était normal mais j'ai deux pages supplémentaires dans lesquels j'ai htmlspecialchars
Voulez-vous que je vous envoie tout le dossier avec le code, par mail par exemple?
Merci d'avance
Bonne soirée a vous! -
-
-
Modifie le en appliquant ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ps: j'espère que tu n'as pas d'espaces dans le dbname ou autres variables..et que ce ne sont que des données bidons que tu as mis juste pour poster sur le forum.... -
J'ai bien modifié en appliquant ce que vous m'avez envoyés seulement cela ne fonctionne toujours pas
Et non ce que je vous ai envoyé est bien mon réel code
<?php try { $bdd = new PDO ('mysql:host=localhost;dbname=site internet;charset=utf8', "LOGIN", "PASS"); $bdd -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(Exception $e) { die('Erreur' .$e->getMessage()) } ?>
-
-
On va y aller par étape.
Peux tu, dans un premier temps ne garder dans ton fichier connexion.php que les lignes<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'config.php'; echo " OK";
Si ça s'affiche bien, c'est que le souci vient d'un truc d'après...
Au passage, sur quoi testes tu tes pages ?
Avec quel logiciel ?
Quelle version de php ?
-
J'ai bien gardé le code que vous m'avez mis, la page s'affiche bien mais lorsque je clique sur connexion cela me mets le même message
<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'config.php'; echo " OK"; ?>
Je suis sous sublimText3 et j'ouvre mes pages sous Google Chrome si c'était bien cela votre question- C'est normal car ce n'est pas cette page qui gère l'affichage, je vais essayer de vous réexpliquer le fonctionnement car j'ai du mal le faire précédemment
La page d'accueil du site se nomme "site.html", sur laquelle il y a un lien vers la page "inscription.php" et "index.php"
lorsque je clique sur la lien m'envoyant vers inscription.php, une page s'ouvre sur laquelle je dois rentrer un nom, email et mot de passe
Lorsque je clique sur m'inscrire, cela menvoit vers ma page "inscription_traitement.php" et c'est a ce moment là que le message s'affiche
Lorsque sur ma page principal, je clique sur "index.php" je dois rentrer un email et un mot de passe pour me connecter. Lorsque ensuite je clique sur connexion, cela me renvoie vers la page "connexion.php" et à ce moment là aussi le message s'affiche
J'espère avoir été clair dans mes explication, je suis navré si au paravent je m'étais mal expliqué
Merci beaucoup pour votre patience
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Lorsque j'ai le message d'erreur j'ai soit l'url "http://localhost/connexion.php" si a la base je souhaite me connecter, sinon j'ai "http://localhost/inscription_traitement.php" si je souhaite m'inscrire
Voici mon code de la page inscription_traitement<?php require_once 'config.php'; if(isset($_POST['pseudo']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password_retype'])) { $pesudo = htmlspecialchars($_POST['pseudo']); $email = htmlspecialchars($_POST['email']); $password = htmlspecialchars($_POST['password']); $password_retype = htmlspecialchars($_POST['password_retype']); $check = bdd->prepare('SELECT pseudo, email, password FROM utilisateur WHERE email=?'); $check->execute(array($email)); $data = $check->fetch(); $row = $check->rowCount(); if($row == 0) { if(strlen($pseudo) <= 100) { if (strlen($email) <= 100) { if(filter_var($email, FILTER_VALIDATE_EMAIL)) { if($password == password_retype) { $password = hash('sah256', $password); $ip = $_SERVER['REMOTE_ADDR']; $insert = $bdd->prepare('INSERT INTO utilisateur(pseudo, email, password, ip)VALUES(:pseudo, :email, :password, :ip)') $insert->execute(array( 'pseudo' => $pseudo, 'email' => $email, 'password' => $password, 'ip' => $ip )); header('Location:http://localhost/inscription.php?reg_err=success'); }else header('Location: inscription.php?reg_err=password'); }else header('Location: inscription.php?reg_err=email') }else header('Location: inscription.php?reg_err=email_lenght'); }else header('Location: inscription.php?reg_err=pseudo_lenght'); }else header('Location: inscription.php?reg_err=already'); } ?>
Voici ma page index.php<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="author" content="NoS1gnal"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <title>Connexion</title> </head> <body> <div class="login-form"> <?php if(isset($_GET['login_err'])) { $err = htmlspecialchars($_GET['login_err']); switch ($err) { case 'password': ?> <div class="alert alert -danger"> <strong>Erreur</strong> mot de passe incorrect </div> <?php break; case 'email': ?> <div class="alert alert -danger"> <strong>Erreur</strong> email de passe incorrect </div> <?php break; case 'already': ?> <div class="alert alert -danger"> <strong>Erreur</strong> compte inexistant </div> <?php break; } } ?> <form action="connexion.php" method="post"> <h2 class="text-center">Connexion</h2> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Email" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <button type="submit" class="btn btn-primary btn-block">Connexion</button> </div> </form> <p class="text-center"><a href="inscription.php">Inscription</a></p> </div> <style> .login-form { width: 340px; margin: 50px auto; } .login-form form { margin-bottom: 15px; background: #f7f7f7; box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); padding: 30px; } .login-form h2 { margin: 0 0 15px; } .form-control, .btn { min-height: 38px; border-radius: 2px; } .btn { font-size: 15px; font-weight: bold; } </style> </body> </html>
Ma page connexion.php j'ai seulement ce que vous m'aviez mis tout à l'heure du coup
<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'config.php'; echo " OK"; ?>
Et voici ma page inscription.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="author" content="NoS1gnal"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <title>Connexion</title> </head> <body> <div class="login-form"> <?php if(isset($_GET['reg_err'])) { $err = htmlspecialchars($_GET['reg_err']); switch($err) { case 'success' : ?> <div class="alert alert -success"> <strong>Succès</strong>inscription réussie! </div> <?php break; case 'password' : ?> <div class="alert alert -danger"> <strong>Erreur</strong>mot de passe différent </div> <?php break; case 'email' : ?> <div class="alert alert -danger"> <strong>Erreur</strong>email non valide </div> <?php break; case 'email_lenght' : ?> <div class="alert alert -danger"> <strong>Erreur</strong>email trop long </div> <?php break; case 'pseudo_lenght' : ?> <div class="alert alert -danger"> <strong>Erreur</strong> pseudo trop long </div> <?php break; case 'already' : ?> <div class="alert alert -danger"> <strong>Erreur</strong>compte déjà existant </div> <?php } } ?> <form action="inscription_traitement.php" method="post"> <h2 class="text-center">Inscription</h2> <div class="form-group"> <input type="text" name="pseudo" class="form-control" placeholder="Pseudo" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Email" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password_retype" class="form-control" placeholder="Re-tapez le mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <button type="submit" class="btn btn-primary btn-block">Inscription</button> </div> </form> </div> <style> .login-form { width: 340px; margin: 50px auto; } .login-form form { margin-bottom: 15px; background: #f7f7f7; box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); padding: 30px; } .login-form h2 { margin: 0 0 15px; } .form-control, .btn { min-height: 38px; border-radius: 2px; } .btn { font-size: 15px; font-weight: bold; } </style> </body> </html>-
-
-
Vérifie que tes fichiers sont bien encodé en UTF-8 sans bom
Voir chapitre 1 du lien suivant
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
N'hésite pas à recréer un nouveau fichier pour remplacer l'existant et ainsi être sûr que tu es dans le bon en collage
Ensuite refait l'essai en mettant en commentaire la ligne du require...
Et dis-moi si tu as toujours l'erreur 500... -
J'ai bien recréé une nouvelle page et vérifié que j'étais en UTF- 8 cependant cela ne fonctionne toujours pas
Voici ma page connexion.php<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'config.php'; echo " OK"; ?> -
Je t'ai demandé de tester sans le require.
l'as tu fait ?
En gros, dans ton fichier connexion.php tu ne gardes que :<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // require_once 'config.php'; echo " OK"; ?>
puis tu essayes d'accéder à cette page et tu nous dis si tu as encore une erreur 500 ...
Si oui... c'est que tu as un souci de config sur ton serveur...
n'aurais tu pas mis en place un fichier .htaccess ??
Pourrais tu essayer de déplacer ton projet dans un sous dossier de ton dossier web ? car j'ai l'impression que tu as mis tes fichiers directement dans le htdocs ( ou www selon le logiciel utiliser pour émuler le serveur web ) ) ...
-