2014-01-13 4 views
0

Я хотел сделать следующее с операторами MySQLi или PDO, но у меня было много ошибок на моем сервере.Безопасен ли этот MySQLi?

Пожалуйста, проверьте, соответствует ли приведенный ниже пример, чтобы узнать код, который я сделал сам, и будет ли он безопасным, и если это нормально. И мы надеемся, код последующих поможет новым пользователям Mysqli, чтобы узнать, по крайней мере, как начать с MySQLi:

<?php 
$host = "localhost"; 
$username = "db_user"; 
$password = "db_pass"; 
$dbname = "db_name"; 
@ $db = mysqli_connect($host, $username, $password, $dbname); 
if(mysqli_connect_errno()) 
{ 
    die("Connection could not be established"); 
} 
$username = mysqli_real_escape_string($db, $_GET['user']); 
$query = ("SELECT * FROM members WHERE profile='$username' ORDER BY id DESC LIMIT 1"); 
$result = mysqli_query($db, $query); 
while($row = mysqli_fetch_array($result)) 
{ 
?> 

PROFILE VIEW 

    <br>Name: <?php echo $row['nombre']?> ID: <?php echo $row['Age']?> <br /> 




<?php 
} 
?> 

Все работает отлично. Если кто-то может сделать это безопаснее, я был бы признателен.

+6

Самое безопасное предположение, что пользовательские данные всегда вредны. второе безопасное предположение заключается в том, чтобы всегда использовать подготовленные операторы с параметризованными входами. –

+1

Пожалуйста, не закрывайте это. Вы повторно используете переменную для двух разных вещей, я не называю это безопасным. Я бы еще больше дезинформировал пользователя. $ query = (""); действительно, но вы не определяете строку. Вы можете удалить (и) вокруг него. –

+5

Этот вопрос не соответствует теме, потому что он просит [кодовое видение] (http://codereview.stackexchange.com/) – Quentin

ответ

1

Я бы пошел с этим.

<?php 
$host = "localhost"; 
$username = "db_user"; 
$password = "db_pass"; 
$dbname = "db_name"; 
$db = mysqli_connect($host, $username, $password, $dbname); 
if(mysqli_connect_errno()) { 
die("Connection could not be established"); 
} 
$username = $_GET['user']; 
$query = $db->prepare("SELECT * FROM `members` WHERE `profile` = ? ORDER BY `id` DESC LIMIT 1"); 
$query->bind_param('s', $username); 
$query->execute(); 
while($row = $query->fetch_row()) { ?> 

<br />Name: <?php echo $row['nombre']; ?> ID: <?php echo $row['Age']; ?> <br /><?php 
} ?> 
+0

Неустранимая ошибка: вызов неопределенного метода mysqli_stmt :: fetch_row() – Firefighter

+0

Не могли бы вы сделать ' var_dump() 'on $ query, после' -> execute() '? – Mave

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