Requête MySQL à l'aide de paramètres d'url en PHP
Tout d'abord c'est la première fois que j'essaie de PHP..
voici le code :
<?php
if (isset($_GET['name']) && isset($_GET['password'])
$uname = $_GET['name'];
$pass = $_GET['password'];
$conn = mysql_connect("localhost","DBusername","DBpassword");
mysql_select_db("DBname",$conn);
$result = mysql_query("SELECT * FROM table WHERE username=$uname and password =$password");
$row = mysql_fetch_array($result);
if(is_array($row)) {
$ip = $row[ip];
echo $ip ;
}else {
echo = "Invalid Username or Password!";
}
?>
Quand j'essaie ce lien : http://www.mywebsite.com/page.php?name=user&mot de passe=monmotdepasse
C'est une page Masquée, je l'utilise pour obtenir mes membres enregistrés l'adresse IP, lorsqu'un utilisateur
essaie de connexion dans mon application Windows Form qui est écrit en C#
toujours une page blanche ..
merci d'avance
- l'analyse db nom d'utilisateur et le mot de passe dans l'url est du suicide
- activer la journalisation des erreurs? plusieurs erreurs de syntaxe et les mauvaises pratiques
- Remarque: Vous pouvez utiliser
isset($_GET['name'], $_GET['password'])
au lieu de nettoyer les choses.
Vous devez vous connecter pour publier un commentaire.
Surround vos variables avec des guillemets simples et ajouter un
die(mysql_error());
à la fin, comme illustré.Avertissement : Votre code est ouvert à l'attaque par Injection SQL.
Autres Grandes Erreurs.
$uname
pas$uanme
isset
construireecho
déclaration.Code Modifié
Ce(
mysql_*
) extension est obsolète depuis laPHP 5.5.0
, et sera supprimée dans le futur. Au lieu de cela, leMySQLi
ouPDO_MySQL
extension doit être utilisée. Commutation dePreparedStatements
est encore plus mieux pour conjurer les attaques par Injection SQL !enabled error reporting
?SELECT
requête ?utilisez des guillemets simples dans $row['ip'] et variables. Votre requête est vulnérable ( SQl Injection) afin de mieux utiliser mysql_real_escape_string() pour les paramètres tels que le nom , le mot de passe.