Собственно тривиальная задача - поиск по базе и вывод результата (на пхп) Я решил так (но чувствую что не то))!!):: PHP: $sql="select name from users where name=$_POST['name']"; $result=mysql_query($sql, $conn); $n=mysql_num_fields($result); if ($n==0) { ... } else { echo 'user c таким именем уже существует!!'; .. } подскажите альтернативные решения пож?!! зы: если что-то не так в коде или логике - просьба конкретизировать и предложить свое!! зыы: ну и сильно не ругайте, ток недавно скуль+пхп начал, пока путаюсь))
Ты думаешь что проблема с алгоритмом ? Все верно, если человека в базе нет - резалт(кол-во строк) - нуль , иначе.. Только используй mysql_num_rows()
))давайте еще распишем тут всю систему безопасного программирования))) зы:: спасиб, безопасность всегда..)), но пока ток логика
С учетом выше сказанного и мануалов:: PHP: $name=mysql_real_escape_string($_POST['name']); $mail=mysql_real_escape_string($_POST['mail']); $pass=mysql_real_escape_string($_POST['pass']); $sql="select name from users where name='".$name."'"; $result=mysql_query($sql, $conn); $n=mysql_num_rows($result); if ($n==0){ $sql="INSERT INTO".$table_name."SET name='".$name"', pass='".$pass"', mail='".$mail."'"; $result=mysql_query($sql, $conn); ... } else { echo ... } зы:: нагромоздил .. почти запутался уже..)
Мда ребята... PHP: <?php if(!get_magic_quotes_gpc()) { $name = mysql_real_escape_string($_POST['name']); $mail = mysql_real_escape_string($_POST['mail']); $pass = mysql_real_escape_string($_POST['pass']); } else { $name = $_POST['name']; $mail = $_POST['mail']; $pass = $_POST['pass']; } $sql = "SELECT `name` FROM `users` WHERE `name` = '".$name."'"; $result = mysql_query($sql, $conn); if(mysql_num_rows($result) > 0) { $sql = "INSERT INTO `".$table_name."` SET `name` = '".$name"', `pass` = '".$pass"', `mail` = '".$mail."'"; $result = mysql_query($sql, $conn); ... } else { echo "Такое имя уже есть"; } ?>
2_Isis Как я понял логика такова (если не так поправь): PHP: !get_magic_quotes_gpc() этим проверятся автоматическая расстановка слэшей пХп если это не так, то далее производим эту расстановку сами PHP: $name = mysql_real_escape_string($_POST['name']); ...
Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной. имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
Знаеш почему я раньше не любил книги с программирования? Там писали заумными словами,которых я не понимал...
имхо agava - очень не плох!!) В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!
А в .htaccess настроить параметры под твои скрипты не судьба? Пишешь туда Code: php_value magic_quotes_gpc off или Code: php_flag magic_quotes_gpc 0 и радуешься нормальной работе твоей системы