2009-11-16 10 views
1
http://localhost/?area=characters&name=Michal+Stroganof 



$result = mysql_query("SELECT * from players WHERE name = '$_GET[name]'"); 

while ($row = mysql_fetch_assoc($result)) { 

    echo "Name: " .$row['name']. "<br>"; 
    echo "Level: " .$row['level']. "<br>"; 

} 

C'est tout le code de mon characters.phpVérification des valeurs querystring en PHP

Si l'obtenir variable « nom » ne figure pas dans l'URL que je veux montrer un formulaire de recherche qui recherche les joueurs de la table. Comment ferais-je cela?

+10

Lisez la suite sur les injections SQL: http://unixwiz.net/techtips/sql-injection.html – BalusC

+2

Il est probablement le cas que votre exemple est juste pour la simplicité, mais si c'est du code en direct s'il vous plaît recherche SQL Injection et les déclarations préparées. –

+0

utiliser une fonction d'entrée pour filtrer l'entrée et éviter les problèmes de type injection SQL, ainsi que d'échapper l'entrée quand il est placé dans le sql, comme mentionné ci-dessus! Ne faites jamais confiance aux données de l'utilisateur. – Kzqai

Répondre

9

Voulez-vous dire juste pour changer votre chaîne SQL comme ça?

$sql = 'SELECT * from players'; 
if (isset($_GET['name'])) { 
    $safename = mysql_real_escape_string($_GET['name']); 
    $sql .= " WHERE name='$safename'"; 
} 
$result = mysql_query($sql); 

Assurez-vous de désinfecter votre SQL!

5

Utilisation isset():

if (isset($_GET['name'])) { 
    // your above code 
} else { 
    // display form   
} 
+0

Ah, bonne prise ... J'ai mal lu la question de l'OP. – jheddings

1

rapide et sale:

<?php 
if (!isset($_GET['name'])) 
{ 
    echo '<form action="'. $_SERVER['PHP_SELF'] .'" method="GET">' 
     .'<input type="text" name="name" />' 
     .'</form>'; 
} 
else 
{ 
    // your current code that queries your database here 
} 
?>