|
|
|
|
|
для: hatsker
(25.10.2005 в 08:17)
| | Самое простое - удалять все одинарные кавычки из переменных, передаваемых в sql запрос. | |
|
|
|
|
|
|
|
для: Евгений Петров
(15.10.2005 в 21:21)
| | А какое альтернативное решение вы предлогаете.....для примера кодик набейпе пожалуйста | |
|
|
|
|
|
|
|
для: tim_mironov
(19.10.2005 в 10:52)
| | А почему NULL в первом значении не пишите? Следует выяснить ошибку при помощи кода
<?php
if(!mysql_query("INSERT INTO user VALUES (NULL, '".$POSTsurname."', '".$POSTname."', '".$POSTpatronymic."', '".$POSTlogin."', '".$POSTpassword."', '".$POSTemail."');"))
{
exit("Ошибка - ".mysql_error());
}
?>
|
PS Под новые вопросы лучше заводить новые темы. | |
|
|
|
|
|
|
|
для: tim_mironov
(15.10.2005 в 21:09)
| | Есть следующая таблица:
Поле Тип Атрибуты Ноль По умолчанию Дополнительно
id mediumint(8) UNSIGNED Нет auto_increment
surname varchar(20) Да NULL
name varchar(20) Нет
patronymic varchar(20) Да NULL
nik varchar(20) Нет
password varchar(8) Нет
e-mail varchar(45) Да NULL
status enum('a', 'm', 'u') Нет u
lastcamedate timestamp Нет CURRENT_TIMESTAMP
|
При таком запросе из PHP:
mysql_query("INSERT INTO user VALUES (, '".$POSTsurname."', '".$POSTname."', '".$POSTpatronymic."', '".$POSTlogin."', '".$POSTpassword."', '".$POSTemail."');");
|
скрипт выполняется до конца, но значения в базу не добавляются. Значения $POSTname, $POSTnik, $POSTpassword обязательно существуют и !=0.
Подскажите, пожалуйста, почему это может происходить. | |
|
|
|
|
|
|
|
для: cheops
(17.10.2005 в 13:53)
| | Спасибо. | |
|
|
|
|
|
|
|
для: Евгений Петров
(17.10.2005 в 01:52)
| | Ну в данном случае пожалуй ничего и не сделаешь (тем более нам не известна цель), в любом случае следует проводить защиту от SQL-инъекций, если она будет корректной, то манипулировать запросом уже не удастся. | |
|
|
|
|
|
|
|
для: tim_mironov
(17.10.2005 в 10:41)
| | if($login) срабатывает только на неправильный синтаксис SQL-запроса, и будет срабатывать всегда, даже если значения $POSTlogin не существует в базе данных. | |
|
|
|
|
|
|
|
для: cheops
(17.10.2005 в 00:59)
| | Уточняю вопрос: "При вводе в $POSTlogin значения не существующего в базе, все равно выполняется команда находящаяся в операторных скобках после if($login), т.е. даже при $login=false. Почему это происходит? Может я чего не понимаю?" | |
|
|
|
|
|
|
|
для: cheops
(17.10.2005 в 00:59)
| | Cheops я как то спрашивал, а вы как то отвечали (но я не помню где :) ) что если проверять на количество возвращаемых записей, то возникает риск того, что SQL - запрос можно будет изменить таким образом, что он вернет хотя бы одно значение. Как можно др. способом проверить возвратила ли MySQL какой нибудь результат? | |
|
|
|
|
|
|
|
для: tim_mironov
(16.10.2005 в 20:44)
| | if($login) срабатывает только на неправильный синтаксис SQL-запроса, но не на число возвращаемых записей. Для проверки числа записей вам придётся воспользоваться функцией mysql_num_rows()
<?php
session_start();
include ("dbconnect.php");
$POSTlogin=$_POST['login'];
$login=mysql_query("SELECT name FROM user WHERE nik = '".$POSTlogin."';");
if($login)
{
if(mysql_num_rows($login) > 0) $_SESSION['login']=mysql_result($login,0);
}
header("location: menu.php");
?>
|
| |
|
|
|
|