J'ai fait du php sous linux debian et dernièrement j'ai fait la mise a jour du système debian ainsi que php et mysql. Avant cette mise à jour mon script de login fonctionnait bien et plus maintenant.
Voici mon code
<html>
<form action="connect.php" method="post">
<a href="register.php">S'enregistrer dans la Cave a Vin</a><br><br>
<?php /* Page: connexion.php */ session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
$hote = ''; $utilisateur = ''; $mdp = ''; $nombdd = ''; // Nom de la base de données $bdd = new PDO("mysql:host=$hote;dbname=$nombdd",$utilisateur, $mdp);
if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé // on vérifie que le champ "Pseudo" n'est pas vide // empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set) if(empty($_POST['email'])) { echo "Le champ email est vide."; // header('Location: index.php'); } else { // on vérifie maintenant si le champ "Mot de passe" n'est pas vide" if(empty($_POST['mdp'])) { echo "Le champ Mot de passe est vide."; // header('Location: index.php'); } else { // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre: $email = mysqli_real_escape_string($_POST['email'], ENT_QUOTES, "ISO-8859-1");
// le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
$mdp=md5($_POST['mdp']);
$Requete = mysqli_query("SELECT * FROM Utilisateur WHERE email = '".$email."' AND mdp = '".$mdp."'"); // si il y a un résultat, mysqli_num_rows() nous donnera alors 1 // si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat if(mysqli_num_rows($Requete) != 0) { $_SESSION['email'] = $email; // echo $_SESSION['login']; // session_register('login'); header('Location: panier4_1.php'); // echo "Le pseudo ou le mot de passe est incorrect, le compte n'a pas été trouvé."; } else { echo "Le mail ou le mot de passe est incorrect, le compte n'a pas été trouvé."; //on ouvre la session avec $_SESSION: // $_SESSION['pseudo'] =$Pseudo; // la session peut être appelée différemment et son contenu aussi peut être autre chose que le pseudo // echo "Vous êtes à présent connecté !"; // header('Location: index.php');
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
<html>
<form action="connect.php" method="post">
<a href="register.php">S'enregistrer dans la Cave a Vin</a><br><br>
Email: <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities($_POST['email']); ?>" /><br>
Mot de passe: <input type="password" name="mdp" value="<?php if (isset($_POST['mdp'])) echo htmlentities($_POST['mdp']); ?>" /><br>
<input type="submit" name="connexion" value="Connexion" /><br>
</form>
</html>
<?php
/*
Page: connexion.php
*/
session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
$hote = '';
$utilisateur = '';
$mdp = '';
$nombdd = ''; // Nom de la base de données
$bdd = new PDO("mysql:host=$hote;dbname=$nombdd", $utilisateur, $mdp);
if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé
// on vérifie que le champ "Pseudo" n'est pas vide
// empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
if(empty($_POST['email'])) {
echo "Le champ email est vide.";
// header('Location: index.php');
} else {
// on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
if(empty($_POST['mdp'])) {
echo "Le champ Mot de passe est vide.";
// header('Location: index.php');
} else {
// les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
$email = mysqli_real_escape_string($_POST['email'], ENT_QUOTES, "ISO-8859-1");
// le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
$mdp=md5($_POST['mdp']);
$Requete = mysqli_query("SELECT * FROM Utilisateur WHERE email = '".$email."' AND mdp = '".$mdp."'");
// si il y a un résultat, mysqli_num_rows() nous donnera alors 1
// si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
if(mysqli_num_rows($Requete) != 0) {
$_SESSION['email'] = $email;
header('Location: panier4_1.php');
} else {
echo "Le mail ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
}
}
}
}
?>
J'ai modifié ton message - la partie avec <pre> n'est valable que si on est en mode markdown. Si tu ne sais pas ce que c'est, tu n'es pas dans ce mode
Ceci dit, éditer un message pour le colorer, ça marche de moins en moins sur le forum... Le plus efficace serait probablement que tu postes un nouveau message, en utilisant bien le bouton </> de la barre d'outils et en choisissant XML/XHTML.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
C'est au niveau de la connexion à la base de donnees. Les tests champs mail et mot de passe vide marchent bien. Quand je mets un faux mot de passe ou le mot de passe juste il saute directement à le
mail ou le mot de passe est incorrect, le compte n'a pas été trouvé.
Avant la mise a jour du debian et la mise a jour de php et mysql tout fonctionnait bien.
J'ai fait un script pour voir si j'arrive à me connecter à la base et afficher quelques données de la table utilisateur et ça marche bien. Je n'arrive pas à trouver le problème pour le script de login. Si c'est un problème au niveau des variables ou autres. Merci
<?php
$db = mysqli_connect('localhost', '', '', '');
if (mysqli_connect_errno()) { printf("�chec de la connexion : %s\n", mysqli_connect_error()); exit(); }
$Requete = mysqli_query($db,"SELECT * FROM Utilisateur");
J'essaye de modifier mon message en markdown et faire l'aperçu avant d'envoyer mais j'arrive pas. Je crois que c'est le navigateur Mozilla qui m'embête. Et là maintenant je ne plus envoyer un nouveau message. Seulement après 24 heures
Bonjour
Je voulais poster un nouveau message en markdown avec un autre code que j'ai trouvé dans le net mais ça n'as pas envoyé comme il fallait. Toujours pas résolu le problème. Merci
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)