Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   ?pHp + mysql (https://forum.antichat.xyz/showthread.php?t=37478)

mR_LiNK[deface_0nl 08.04.2007 19:00

?pHp + mysql
 
Собственно тривиальная задача - поиск по базе и вывод результата (на пхп)

Я решил так (но чувствую что не то))!!)::
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 таким именем уже существует!!';
..


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

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

r0 08.04.2007 19:52

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

mamamot 08.04.2007 20:33

PHP код:

<?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

Цитата:

Сообщение от nc.STRIEM
$sql='select name from users where name=\''.mysql_escape_string($_POST['name']).'\'';

))давайте еще распишем тут всю систему безопасного программирования)))

зы:: спасиб, безопасность всегда..)), но пока ток логика

mR_LiNK[deface_0nl 08.04.2007 23:58

С учетом выше сказанного и мануалов::
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 ...


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

Isis 09.04.2007 00:24

Мда ребята...
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 
"Такое имя уже есть";
}
?>


mR_LiNK[deface_0nl 09.04.2007 00:43

2_Isis
Как я понял логика такова (если не так поправь):
PHP код:

!get_magic_quotes_gpc() 

этим проверятся автоматическая расстановка слэшей пХп
если это не так, то далее производим эту расстановку сами
PHP код:

$name mysql_real_escape_string($_POST['name']);
... 



Время: 02:20