Просмотр полной версии : ?pHp + mysql
mR_LiNK[deface_0nl
08.04.2007, 19:00
Собственно тривиальная задача - поиск по базе и вывод результата (на пхп)
Я решил так (но чувствую что не то))!!)::
$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
$query = "SELECT COUNT(*) FROM users WHERE user='".S_POST['name']."'";
$res=mysql_query($query)
if(mysql_result($res,1)==0)
{
echo "такого пользователя нет";
...
}
else
{
echo "Пользователь с указанным именем существует!";
}
?>
Здесь уже больше SQL, чем PHP
mR_LiNK[deface_0nl
08.04.2007, 20:43
Всем + и спасибо!
user='".S_POST['name']."'";
=))))
Неплохо было бы еще профильтровать параметр..
nc.STRIEM
08.04.2007, 21:59
$sql='select name from users where name=\''.mysql_escape_string($_POST['name']).'\'';
mR_LiNK[deface_0nl
08.04.2007, 22:21
$sql='select name from users where name=\''.mysql_escape_string($_POST['name']).'\'';
))давайте еще распишем тут всю систему безопасного программирования)))
зы:: спасиб, безопасность всегда..)), но пока ток логика
mR_LiNK[deface_0nl
08.04.2007, 23:58
С учетом выше сказанного и мануалов::
$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
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 "Такое имя уже есть";
}
?>
mR_LiNK[deface_0nl
09.04.2007, 00:43
2_Isis
Как я понял логика такова (если не так поправь):
!get_magic_quotes_gpc()
этим проверятся автоматическая расстановка слэшей пХп
если это не так, то далее производим эту расстановку сами
$name = mysql_real_escape_string($_POST['name']);
...
Нужно строковые значения точками выделять '".S_POST['name']."' и фильтровать лутше сразу учись
mR_LiNK[deface_0nl
09.04.2007, 02:26
Разобрался уже, спасибо..
кстати _http://phpfaq.ru/slashes_ неплохая статейка на эту тему!
'".S_POST['name']."'
уже вторая твоя опечатка...
правильнее
'".$_POST['name']."' =)
Нужно строковые значения точками выделять '".S_POST['name']."' и фильтровать лутше сразу учись
Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной.
!get_magic_quotes_gpc()
имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной.
имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
Знаеш почему я раньше не любил книги с программирования? Там писали заумными словами,которых я не понимал...
GreenBear
09.04.2007, 16:35
имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
лучше не хоститься на блядских серверах
mR_LiNK[deface_0nl
09.04.2007, 21:40
лучше не хоститься на блядских серверах
имхо agava - очень не плох!!)
В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!
честно зае^^вает править при переносе!!
А в .htaccess настроить параметры под твои скрипты не судьба?
Пишешь туда
php_value magic_quotes_gpc off
или
php_flag magic_quotes_gpc 0
и радуешься нормальной работе твоей системы
имхо agava - очень не плох!!)
В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!
Я от вашего "имхо" подавился.....
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot