Question sécurité php
Fermé
Php_Sécurité
-
Modifié par Php_Sécurité le 22/02/2012 à 18:25
Php_securite Messages postés 6 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 4 mai 2015 - 2 mars 2012 à 15:00
Php_securite Messages postés 6 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 4 mai 2015 - 2 mars 2012 à 15:00
A voir également:
- Question sécurité php
- Mode securite - Guide
- Easy php - Télécharger - Divers Web & Internet
- Désactiver sécurité windows - Guide
- Retour a la ligne php ✓ - Forum PHP
- Bouton sécurité windows - Forum Windows
8 réponses
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
22 févr. 2012 à 18:28
22 févr. 2012 à 18:28
Bonsoir,
A priori tu as bien fais ce qu'il fallait niveau sécurité. Sinon je te conseil d'utiliser PDO pour te simplifier la vie, et éviter ce genre de variable : mysql_escape_string($_POST['login'])
A priori tu as bien fais ce qu'il fallait niveau sécurité. Sinon je te conseil d'utiliser PDO pour te simplifier la vie, et éviter ce genre de variable : mysql_escape_string($_POST['login'])
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
22 févr. 2012 à 22:23
22 févr. 2012 à 22:23
Voila un des codes pour se connecter. Il faut que tu change les requêtes, et le mot de passe n'est pas en md5 il faut que tu le fasse.
<?php session_start(); ?> <form method="post" action="#"> <input name="account" type="text" value="account"><br/> <input name="password" type="password" value="Mot de passe"><br/> <input type="submit" value="Valider"/><br/> </form> <?php try //test de la connexion { $bdd = new PDO('mysql:host=localhost;dbname=test','root',''); //connexion } catch (Exception $e) { die('Erreur : '.$e->getMessage()); // si la connexion échoue, on renvoie un message d'erreur au lieu d'afficher le code php } if(isset($_POST['account']) AND isset($_POST['password'])) { $requete = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE account = ?'); $requete->execute(array($_POST['account'])); $nombreDeLignes = $requete->fetch(); // Récupère le résultat du calcul if ($nombreDeLignes[0] == 0) // on teste le nombre de ligne: si il est egal à 0, le pseudo n'exite pas { echo 'Pseudo incorrect'; } else { $requete = $bdd->prepare('SELECT password FROM membres WHERE account = ?'); $requete->execute(array($_POST['account'])); $reponse = $requete->fetch(); if ($_POST['password'] == $reponse['password']) { $_SESSION['account'] = $_POST['account']; echo 'Bonne navigation<br/>'; echo $_POST['account']; } else { echo 'Mot de passe incorrect'; } } $requete->closeCursor(); } else { echo 'ERREUR'; } ?>
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
22 févr. 2012 à 22:32
22 févr. 2012 à 22:32
Si tu t'en sors pas voici la table membres
CREATE TABLE 'membres' ( 'id' int(11) NOT NULL AUTO_INCREMENT, 'account' varchar(50) NOT NULL, 'password' varchar(50) NOT NULL, 'email' varchar(100) NOT NULL, PRIMARY KEY ('id') ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
Je n'arrive pas à mettre en place ce code.
J'ai le message pseudo incorrect...
Ma table membre :
Dans le code que j'avais poster en haut je suis redirigé vers la page membre.php
Dans le code que tu m'as donné je ne comprend pas comment la redirection se fera ?
Merci d'avance ;)
J'ai le message pseudo incorrect...
<?php try //test de la connexion { $bdd = new PDO('mysql:host=localhost;dbname=nom_bdd', 'root', 'pass', $pdo_options); //connexion } catch (Exception $e) { die('Erreur : '.$e->getMessage()); // si la connexion échoue, on renvoie un message d'erreur au lieu d'afficher le code php } if(isset($_POST['login']) AND isset($_POST['password'])) { $requete = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE login = ?'); $requete->execute(array($_POST['login'])); $nombreDeLignes = $requete->fetch(); // Récupère le résultat du calcul if ($nombreDeLignes[0] == 0) // on teste le nombre de ligne: si il est egal à 0, le pseudo n'exite pas { echo 'Pseudo incorrect'; } else { $requete = $bdd->prepare('SELECT password FROM membres WHERE login = ?'); $requete->execute(array($_POST['login'])); $reponse = $requete->fetch(); if ($_POST['password'] == $reponse['password']) { $_SESSION['login'] = $_POST['login']; echo 'Bonne navigation<br/>'; echo $_POST['login']; } else { echo 'Mot de passe incorrect'; } } $requete->closeCursor(); } else { echo 'ERREUR'; } ?> <form action="index.php" method="post"> <p>Identifiant* <br/> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>" /><br /></p> <p>Mot de passe* <br/> <input type="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlentities(trim($_POST['password'])); ?>" /><br /> <input type="submit" name="connexion" value="Connexion" /></p> </form>
Ma table membre :
1 id int(11) Non Null AUTO_INCREMENT 2 login varchar(50) Non Null latin1_swedish_ci 3 password varchar(50) Non Null latin1_swedish_ci
Dans le code que j'avais poster en haut je suis redirigé vers la page membre.php
Dans le code que tu m'as donné je ne comprend pas comment la redirection se fera ?
Merci d'avance ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon tous est ok pour moi, j'avais une erreur à l'appel de ma table membre et pas membre's'.
Par contre je n'arrive pas à rediriger vers ma page membre.php l'utilisateur une fois loggé...
j'essaye cela mais ça ne marche pas :
Par contre je n'arrive pas à rediriger vers ma page membre.php l'utilisateur une fois loggé...
j'essaye cela mais ça ne marche pas :
<?php try //test de la connexion { $bdd = new PDO('mysql:host=localhost;dbname=nom_bdd', 'root', 'pass'); //connexion } catch (Exception $e) { die('Erreur : '.$e->getMessage()); // si la connexion échoue, on renvoie un message d'erreur au lieu d'afficher le code php } if(isset($_POST['login']) AND isset($_POST['password'])) { $requete = $bdd->prepare('SELECT COUNT(*) FROM membre WHERE login = ?'); $requete->execute(array($_POST['login'])); $nombreDeLignes = $requete->fetch(); // Récupère le résultat du calcul if ($nombreDeLignes[0] == 0) // on teste le nombre de ligne: si il est egal à 0, le pseudo n'exite pas { echo 'Pseudo incorrect'; } else { $requete = $bdd->prepare('SELECT password FROM membre WHERE login = ?'); $requete->execute(array($_POST['login'])); $reponse = $requete->fetch(); if ($_POST['password'] == $reponse['password']) { session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { echo 'Mot de passe incorrect'; } } $requete->closeCursor(); } else { echo 'ERREUR'; } ?>
Php_securite
Messages postés
6
Date d'inscription
mercredi 29 février 2012
Statut
Membre
Dernière intervention
4 mai 2015
29 févr. 2012 à 22:29
29 févr. 2012 à 22:29
Up ?
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
2 mars 2012 à 13:01
2 mars 2012 à 13:01
As tu essayés de faire une redirection en HTML ?
Php_securite
Messages postés
6
Date d'inscription
mercredi 29 février 2012
Statut
Membre
Dernière intervention
4 mai 2015
2 mars 2012 à 14:34
2 mars 2012 à 14:34
Une redirection du style :
???
<meta http-equiv="refresh" ;URL=ma_page_membres.php">
???
Php_securite
Messages postés
6
Date d'inscription
mercredi 29 février 2012
Statut
Membre
Dernière intervention
4 mai 2015
2 mars 2012 à 15:00
2 mars 2012 à 15:00
<?php try //test de la connexion { $bdd = new PDO('mysql:host=...;dbname=...', '...', '...'); //connexion } catch (Exception $e) { die('Erreur : '.$e->getMessage()); // si la connexion échoue, on renvoie un message d'erreur au lieu d'afficher le code php } if(isset($_POST['login']) AND isset($_POST['password'])) { $requete = $bdd->prepare('SELECT COUNT(*) FROM membre WHERE login = ?'); $requete->execute(array($_POST['login'])); $nombreDeLignes = $requete->fetch(); // Récupère le résultat du calcul if ($nombreDeLignes[0] == 0) // on teste le nombre de ligne: si il est egal à 0, le pseudo n'exite pas { echo 'Pseudo incorrect'; } else { $requete = $bdd->prepare('SELECT password FROM membre WHERE login = ?'); $requete->execute(array($_POST['login'])); $reponse = $requete->fetch(); if (md5($_POST['password']) == $reponse['password']) { session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); } else { echo 'Mot de passe incorrect'; } } $requete->closeCursor(); } else { echo 'ERREUR'; } ?>
J'ai un message d'erreur :
Warning: Cannot modify header information - headers already sent by (output started at /index.php:10) in /index.php on line 66
22 févr. 2012 à 22:02