[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нерабочий скрипт - почему?
gab_ber
Доброго времени суток, уважаемые господа.
Подскажите пожалуйста, почему не отображается страница, хотя бы ошибки и т.д, а тут просто пустая страница...

<?php

---тут обрабатываем данные, полученные из формы---


include ("bd.php");

$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);//такой ли у пользователя е-мейл
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']) or $myrow['id']=='') {
//если активированного пользователя с таким логином и е-mail адресом нет
exit ("Пользователя с таким e-mail адресом не обнаружено<a href='index.php'>Главная страница</a>");
}
//если пользователь с таким логином и е-мейлом найден, то необходимо сгенерировать для него случайный пароль, обновить его в базе и отправить на е-мейл

--- тут пишем email ---

else {//если данные еще не введены
echo '
<html>
<head>
<title>Забыли пароль?</title>
</head>
<body>
<h2>Забыли пароль?</h2>
<form action="#" method="post">
Введите Вашу фамилию:<br> <input type="text" name="last_name"><br><br>
Введите Ваш E-mail: <br><input type="text" name="email"><br><br>
<input type="submit" name="submit" value="Отправить">
</form>
</body>
</html>'
;
}

?>


и у меня паказывает пустую страницу :(



Спустя 1 минута, 52 секунды (29.09.2011 - 10:42) TMake написал(а):
gab_ber в самое начало скрипта добавь -
ini_set ( 'display_errors' , 'on' );

посмотри что тебе выдает mysql_error ();

Спустя 3 минуты, 49 секунд (29.09.2011 - 10:46) TMake написал(а):
Цитата (gab_ber @ 29.09.2011 - 11:40)
last_name='$last_name'

Цитата (gab_ber @ 29.09.2011 - 11:40)
email='$email'

Сразу изучай статьи по безопасности, а то будут дырки!

Спустя 5 минут, 8 секунд (29.09.2011 - 10:51) gab_ber написал(а):
stepan у меня и так стоит
 ini_set('display_errors',1);
error_reporting(E_ALL);


никакой ошибки не высвечивается...просто пустая стр, никакого html кода...

Спустя 4 минуты, 3 секунды (29.09.2011 - 10:55) TMake написал(а):
Цитата (stepan @ 29.09.2011 - 11:42)
посмотри что тебе выдает mysql_error ();


Спустя 6 минут, 1 секунда (29.09.2011 - 11:01) gab_ber написал(а):
Цитата (stepan @ 29.09.2011 - 10:46)
Цитата (gab_ber @ 29.09.2011 - 11:40)
last_name='$last_name'

Цитата (gab_ber @ 29.09.2011 - 11:40)
email='$email'

Сразу изучай статьи по безопасности, а то будут дырки!

про это не понял. можно поподробнее?!

ошибку нашел мозиловским Фаербагом...не было закрывающихся скобок '}', немного запутался с if....else

Спустя 30 минут, 26 секунд (29.09.2011 - 11:31) Renden написал(а):
gab_ber
include ("bd.php");
$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);
if(!mysql_num_rows($result))
exit ("Пользователя с таким e-mail адресом не обнаружено<a href='index.php'>Главная страница</a>");
else {

Спустя 3 минуты, 52 секунды (29.09.2011 - 11:35) Renden написал(а):
gab_ber
Цитата
Сразу изучай статьи по безопасности, а то будут дырки!
про это не понял. можно поподробнее?!

наверно имелось ввиду что нужно обрабатывать входящие данные из $_POST, я думаю у тя как-то так:

$last_name = $_POST['lastname'];
$email = $_POST['email'];
...

//а надо хотяб так:
$last_name = mysql_real_escape_string(trim($_POST['lastname']));
$email = mysql_real_escape_string(trim($_POST['email']));
...


Спустя 2 минуты, 45 секунд (29.09.2011 - 11:38) TMake написал(а):
Цитата (Renden @ 29.09.2011 - 12:35)
наверно имелось ввиду что нужно обрабатывать входящие данные из $_POST, я думаю у тя как-то так:

лучше сразу в запросе указывать mysql_real_escape_string иначе можешь забыть отфильтровать и тогда будет дыра

Спустя 40 минут, 56 секунд (29.09.2011 - 12:19) inpost написал(а):
gab_ber
mysql_query(запрос) or die(mysql_error());


И у тебя должна была ошибка выйти на эту строчку:
--- тут пишем email ---

Спустя 34 минуты, 39 секунд (29.09.2011 - 12:53) m4a1fox написал(а):
Я бы еще рекомендовал в подпись inpost'a заглянуть! Так как автор походу с курсов попова слез недавно! ИМХО конечно но все таки может быть и так!

Спустя 15 минут, 51 секунда (29.09.2011 - 13:09) XCross написал(а):
$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);

Я, конечно, не inpost по-способностям, но по-моему автор не знает о конкатенации строк? И еще. 1 в апострофы не нужно обрамлять, это ведь не строка.

$result = mysql_query("SELECT id FROM registration WHERE last_name='.$last_name.' AND email='.$email.' AND activation=1") or die(mysql_error());


Во время отладки использую or die(mysql_error()); после запроса. Как уже сказали, используй mysql_real_escape_string.

$result = mysql_query("SELECT `id` FROM `registration` WHERE 
`last_name` = '"
.mysql_real_escape_string($last_name)."' AND
`email` = '"
.mysql_real_escape_string($email)."' AND
`activation` = 1"
) or die(mysql_error());


Ну и напоследок. Имена полей обрамляй в обратные кавычки(Shift+Ё). Это нужно, чтоб в случае совпадения зарезервированного слова и имени поля не было ошибки.

Где-то так.


 ! 

М
Кавычки подправил
inpost

Спустя 6 минут, 15 секунд (29.09.2011 - 13:16) Winston написал(а):
Цитата (kmaks @ 29.09.2011 - 13:09)
И еще. 1 в апострофы не нужно обрамлять, это ведь не строка.

Все значения нужно обрамлять

Спустя 19 минут, 36 секунд (29.09.2011 - 13:35) XCross написал(а):
Цитата (Winston @ 29.09.2011 - 06:16)
Цитата (kmaks @ 29.09.2011 - 13:09)
И еще. 1 в апострофы не нужно обрамлять, это ведь не строка.

Все значения нужно обрамлять

Врешь. dry.gif Наверное biggrin.gif

Спустя 8 минут, 21 секунда (29.09.2011 - 13:44) inpost написал(а):
Цифры можно не брать в кавычки. Уместнее слово "можно".
Я у себя их никогда не беру smile.gif

Спустя 7 минут, 24 секунды (29.09.2011 - 13:51) m4a1fox написал(а):
Можно еще и так
include './db(ибо database а не как у Попова (bd - тбо БазаДанных - т.е. BaseData)).php';

Спустя 1 минута, 39 секунд (29.09.2011 - 13:53) gab_ber написал(а):
а таким способом обрабатывать мало?
$email = substr($_POST["email"],0,32);
$email = htmlspecialchars(stripslashes($email));


Спустя 11 минут, 14 секунд (29.09.2011 - 14:04) m4a1fox написал(а):
gab_ber
Ну почему? Давай смотреть
Цитата

$email = substr($_POST["email"],0,32); --обрезаем строку максимум 32 символа - нормально, дальше.
  $email = htmlspecialchars(stripslashes($email)); - 1 - переводим все символы в html формат, и 2 - удаляем экранированные слеши!


stripslashes - если я напишу так m4a1/'Foxc@mail.ru - то на выходе мы получим
m4a1'Foxc@mail.ru

А теперь mysql_real_escape_string - я ввожу так m4a1'Foxc@mail.ru - выход - m4a1\'Foxc@mail.ru.

Чувствуешь разницу?

Спустя 1 минута, 13 секунд (29.09.2011 - 14:05) XCross написал(а):
В такой ситуации нужно использовать регулярное выражение.

Цитата (inpost @ 29.09.2011 - 06:44)
Цифры можно не брать в кавычки. Уместнее слово "можно".
Я у себя их никогда не беру smile.gif

Аналогично.

Спустя 1 час, 31 минута, 53 секунды (29.09.2011 - 15:37) inpost написал(а):
gab_ber
Пофантазируем, челове ввёл 33 символа для email, у него скрипт принял и написал, что он зарегистрирован.
Как ты думаешь, на какой из емейлов будет ждать посетитель письма? На 32 или на 33 символа?
stripslashes - магические кавычки отключи, и не пользуйся ею, будет только мешать.

Спустя 15 минут, 31 секунда (29.09.2011 - 15:52) XCross написал(а):
Цитата
stripslashes - магические кавычки отключи, и не пользуйся ею, будет только мешать.

А лучше написать функцию, в которой будет проверка на активность "Магических кавычек" в настройках интерпритатора. Если активны, то обработает, если же нет - нет. А то на хостинг прийдет, а не все ведь позволят изменить настройки.

Спустя 5 минут, 53 секунды (29.09.2011 - 15:58) Winston написал(а):
Супер-мега-защита :D
Свернутый текст
function superPuperSecurity($data)
{
return trim(stripcslashes(addcslashes(mysql_real_escape_string(strip_tags($data)), '%\\_')));
}

echo superPuperSecurity("<script>alert('test');</script>");

Спустя 17 минут, 43 секунды (29.09.2011 - 16:16) inpost написал(а):
Winston
htmlspecialchars ещё добавь. И preg_replace по маске ~^.*$~ на ''


_____________
Что будет, если всеразрушающий шар врежется в неразрушимую стену??
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.