2014-12-24 2 views
-1

я запутаться для поста переменной SQL запроса, здесь образец моего report.php кодаЗапрос для условия «ВСЕ» с переменной?

<form action="report.php"> 
<select id="status" name="status">      
    <option value="MARRIED">married</option> 
    <option value="SINGLE">Single</option> 
    <option value="ALL">ALL</option> 
</select> 

<input type="submit" value="Seach"> 
</form> 

<?php 

$status= $_GET['status']; 

// Create DB connection 
$sql = "SELECT * FROM member WHERE status ='$status'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<B>id: </B>" . $row["user_id"]. " -- <b>Date Record:</b> " . $row["created"]. " -- <b>Last Seen</b> " . $row["last_seen"]. " -- <b>Status: </b> " 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 

?> 

Как я Запрос Если «ALL» состояние выбрано?

ответ

2

Было бы очень мудрым в этом случае для хранения переменной $ статуса в POST вместо этого, так как SQL запрос зависит от того, какое значение хранится в URL-адресе, и, таким образом, подвергается воздействию пользователя.

Другое дело, поскольку вы имеете дело с устаревшим кодом здесь, чтобы убедиться, что вы фильтруете пользовательский ввод и SQL-запрос как можно больше. Использование устаревшей и устаревшей функциональности заключается в том, что вы по-прежнему будете уязвимы для атак XSS и SQL, независимо от мер предосторожности, поэтому настоятельно рекомендуется использовать либо расширение , либо PDO (PHP Data Objects), поскольку эти предложения более стабильной и расширенной функциональности.

$status = htmlspecialchars($_GET['status'], ENT_QUOTES); 
$where = ''; 
if ($status != 'ALL') { 
    $where = 'WHERE status = "$status"'; 
} 

$sql = mysql_real_escape_string('SELECT * FROM member ' . $where); 
$results = mysql_query($sql); 
+0

Привет hRdCoder, спасибо , Я никогда не думал об этом, Да, я читал много обо мне, чем об уязвимости, но это будет хорошо для меня, потому что это только для моего небольшого приложения и частного использования, спасибо hRdCoder. – esi0411

+0

Ваш очень приветствуем, esi0411. Я надеюсь, что мое предложение поможет вам. – hRdCoder

4

Я не знаю PHP, так что это не точный код, но понятие должно быть, как это

if($status == 'ALL') 
    $sql = "SELECT * FROM member"; 
else 
    $sql = "SELECT * FROM member WHERE status ='$status'"; 
+1

следить [SQL-инъекций] (http://stackoverflow.com/questions/601300/what-is-sql-injection) –

0

В PHP файл

<?php 

$status= $_GET['status']; 

if($status == 'ALL'){ 
    $where = ''; 
}else{ 
    $where = 'status = '".$status."' '; 
} 
// Create DB connection 
$sql = "SELECT * FROM member WHERE ".$where." "; 

?> 
Смежные вопросы