PDA

Просмотр полной версии : ?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 таким именем уже существует!!';
..
}

подскажите альтернативные решения пож?!!

зы: если что-то не так в коде или логике - просьба конкретизировать и предложить свое!!
зыы: ну и сильно не ругайте, ток недавно скуль+пхп начал, пока путаюсь))

r0
08.04.2007, 19:52
Ты думаешь что проблема с алгоритмом ? Все верно, если человека в базе нет - резалт(кол-во строк) - нуль , иначе..
Только используй mysql_num_rows()

mamamot
08.04.2007, 20:33
<?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
Всем + и спасибо!

r0
08.04.2007, 21:31
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 ...
}

зы:: нагромоздил .. почти запутался уже..)

Isis
09.04.2007, 00:24
Мда ребята...

<?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']);
...

bxN5
09.04.2007, 01:04
Нужно строковые значения точками выделять '".S_POST['name']."' и фильтровать лутше сразу учись

mR_LiNK[deface_0nl
09.04.2007, 02:26
Разобрался уже, спасибо..

кстати _http://phpfaq.ru/slashes_ неплохая статейка на эту тему!

p-range
09.04.2007, 10:01
'".S_POST['name']."'
уже вторая твоя опечатка...
правильнее
'".$_POST['name']."' =)

r0
09.04.2007, 14:29
Нужно строковые значения точками выделять '".S_POST['name']."' и фильтровать лутше сразу учись
Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной.
!get_magic_quotes_gpc()
имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..

bxN5
09.04.2007, 16:27
Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной.

имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
Знаеш почему я раньше не любил книги с программирования? Там писали заумными словами,которых я не понимал...

GreenBear
09.04.2007, 16:35
имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
лучше не хоститься на блядских серверах

mR_LiNK[deface_0nl
09.04.2007, 21:40
лучше не хоститься на блядских серверах

имхо agava - очень не плох!!)

В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!

Helios
09.04.2007, 23:32
честно зае^^вает править при переносе!!

А в .htaccess настроить параметры под твои скрипты не судьба?

Пишешь туда
php_value magic_quotes_gpc off
или
php_flag magic_quotes_gpc 0
и радуешься нормальной работе твоей системы

Isis
09.04.2007, 23:32
имхо agava - очень не плох!!)

В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!
Я от вашего "имхо" подавился.....