$user = mysql_query(\"SELECT * FROM `\".$prefix.\"users` WHERE `login`=\'\".htmlspecialchars(mysql_real_escape_string(trim($_COOKIE[\'login\']))).\"\' AND `password`=\'\".htmlspecialchars(mysql_real_escape_string(trim($_COOKIE[\'password\']))).\"\'\"
;
Подскажите пожалуйста, есть ли здесь SQL Injection
zerg, Если $prefix профельтрирована,то нет.
MrAK,
[code]<?php
$db = mysql_connect(\"localhost\", \"\", \"\"
mysql_select_db(\"\", $db);
$prefix = \'top_\';
error_reporting(0);
if(!$db){exit(\'Сайт временно не работает.Попробуйте зайти позже.<br>\');}
mysql_query(\'SET NAMES utf8\');
?>[/code]
Префикс используется для подключения к базе.
zerg, Значит делай так:
$user = mysql_query(\"SELECT * FROM `\".trim($prefix.\"users)`
MrAK, Не помогает. Ошибка выходит.
[code]function key_rand(){
$s = str_split(\'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789\');
$key = \'\';
for ($i = 0; $i <= 15; $i++){
$rand = mt_rand(2,30);
$key .= $s[$rand];
}
return $key;
}
$systema = mysql_query(\"SELECT * FROM `\".$prefix.\"settings`\"
$set = array();
while ($query = mysql_fetch_array($systema)){
$set[$query[0]] = $query[1];
}
if(isset($_COOKIE[\'login\']) AND isset($_COOKIE[\'password\'])){
$user = mysql_query(\"SELECT * FROM `\".$prefix.\"users` WHERE `login`=\'\".htmlspecialchars(mysql_real_escape_string(trim($_COOKIE[\'login\']))).\"\' AND `password`=\'\".htmlspecialchars(mysql_real_escape_string(trim($_COOKIE[\'password\']))).\"\'\"
if(mysql_num_rows($user) > 0){
$user_data = mysql_fetch_array($user);
}}
[/code]
Это полностью вся функция
$prefixz = \'top_\';
$prefix = htmlspecialchars($prefixz);
Так проще, думается мне
denis_s, Чего?)
Строчку пропустить через числовой фильтр?
Забавно...
Mobiaaa, в спешке написал первую пришедшую на ум функцию, смысл тот же
denis_s, да и вообще я не понимаю, что вы чудите))
в переменной нет инъекции, и в запросе всё чисто..
зачем нагружать скрипт..