Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2013, 20:02   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Notice / проблемы с регистрацией.

Здравствуйте.
Я конструирую первую регистрацию и столкнулся с проблемой.

После регистрации, всё нормально, данные заносятся в БД и приходит в браузер сообщение что регистрация успешна.
После регистрации когда меня перекидывает на form_processing.php (где и высвечивается что регистрация прошла успешно), если я нажму в адресной строке и Enter вылетает Notice.
Предполагаю что это из-за htmlspecialchars.



Код:
Notice: Undefined index: login in C:\www\form_processing.php on line 4

Notice: Undefined index: sin in C:\www\form_processing.php on line 5

Notice: Undefined index: pass in C:\www\form_processing.php on line 6

Notice: Undefined index: email in C:\www\form_processing.php on line 7

Notice: Undefined index: question in C:\www\form_processing.php on line 8

Notice: Undefined index: answer in C:\www\form_processing.php on line 9

Notice: Undefined index: phone in C:\www\form_processing.php on line 10

Notice: Undefined index: skype in C:\www\form_processing.php on line 11

Notice: Undefined index: icq in C:\www\form_processing.php on line 12

Notice: Undefined index: login in C:\www\form_processing.php on line 15
Пожалуйста исправьте следующую ошибку:

Введите ваше имя!
Сам php файл

Код:
<?php
include "config/options.php";

$login = htmlspecialchars($_POST["login"]);
$sin = htmlspecialchars($_POST["sin"]);
$pass = htmlspecialchars($_POST["pass"]);
$email = htmlspecialchars($_POST["email"]);
$question = htmlspecialchars($_POST["question"]);
$answer = htmlspecialchars($_POST["answer"]);
$phone = htmlspecialchars($_POST["phone"]);
$skype = htmlspecialchars($_POST["skype"]);
$icq = htmlspecialchars($_POST["icq"]);

$login = $login.$sin;
$your_name = check_input($_POST["login"], "Введите ваше имя!");
$pass = check_input($_POST["pass"], "Выберите пароль!");
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("<br /> Е-mail адрес не существует");
}


$pass = base64_encode(sha1($pass, true));

 $sel = "SELECT * FROM accounts WHERE login = '$login'";
 $res = mysql_query($sel); 
 $num = mysql_num_rows($res);
 if($num == 0) {
 
$query = "INSERT INTO `accounts` (`login`, `password`, `email`, `lastIP`, `question`,`answer`,`phone`,`skype`, `icq`) VALUES ('$login', '$pass', '$email', '".$_SERVER['REMOTE_ADDR']."',
'$question', '$answer', '$phone',  '$skype',  '$icq')";
     $result = mysql_query($query);
     if($result)
     {  echo "Вы зарегистрированы!";
 

     }
 }
 else 
 {
 echo "Пользователь с таким именем существует! ";
 }
 
?>
<p></p>
<p>На <a href="index.php">Главную >>></a></p>
<?php
function check_input($data, $problem = "")
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>


Последний раз редактировалось Jleksern; 11.02.2013 в 20:05.
Jleksern вне форума Ответить с цитированием
Старый 11.02.2013, 20:39   #2
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

Notice: Undefined index: login in C:\www\form_processing.php on line 4, насколько я понимаю переменную скрипт не видит, надо передать переменную из скрипта регистрации в form_processing.php, например хранить в сессии,а потом вытаскивать.
kuba1981 вне форума Ответить с цитированием
Старый 11.02.2013, 22:02   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от kuba1981 Посмотреть сообщение
Notice: Undefined index: login in C:\www\form_processing.php on line 4, насколько я понимаю переменную скрипт не видит, надо передать переменную из скрипта регистрации в form_processing.php, например хранить в сессии,а потом вытаскивать.
Я тоже так подумал.
Но если бы он не видит эти переменные, тогда почему в БД всё корректно добавляет эти переменные ?
Jleksern вне форума Ответить с цитированием
Старый 12.02.2013, 03:21   #4
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Цитата:
Сообщение от Jleksern Посмотреть сообщение
Я тоже так подумал.
Но если бы он не видит эти переменные, тогда почему в БД всё корректно добавляет эти переменные ?
Попробуйте сделать проверку на существование массива $_POST
slips вне форума Ответить с цитированием
Старый 12.02.2013, 08:32   #5
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

Если я правильно понял у вас есть скрипт регистрации вы регистрируетесь, а потом перенаправляете на form_processing.php???и там хотите использовать перерменные???если так то переменные не будут видны в form_processing.php, их надо передавать.
kuba1981 вне форума Ответить с цитированием
Старый 17.02.2013, 02:28   #6
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от kuba1981 Посмотреть сообщение
Если я правильно понял у вас есть скрипт регистрации вы регистрируетесь, а потом перенаправляете на form_processing.php???и там хотите использовать перерменные???если так то переменные не будут видны в form_processing.php, их надо передавать.
Подскажите, каким образом?
Jleksern вне форума Ответить с цитированием
Старый 17.02.2013, 09:57   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Да уж. А зачем после переадресации еще раз нажимать ентер? Одно дело, когда вы на этот скрипт направляетесь из формы, тогда там есть значения глобального массива пост. Другое - когда тупо сами из браузера вызываем. Обязательно проверяйте существование поста... Да, notice можно отключить установкой error_report()
ADSoft вне форума Ответить с цитированием
Старый 17.02.2013, 12:09   #8
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

Передать можно через GET, через сессию, не совсем понятно чего вы хотите добиться???после регистрации напряавляют обычно на авторизацию, header("Location ./auth.php"); типа такого, после авторизации если все прошло хорошо можно в переменную сессии записать нужные данные и потом использовать.
kuba1981 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с поисковиком и регистрацией (не работают) Хасанович Иван Помощь студентам 27 08.02.2013 17:08
проблема с регистрацией Pein95 PHP 6 09.05.2012 00:54
В чем проблема? - Notice: Undefined variable onleon PHP 1 03.07.2010 11:37
Ошибка Notice: Undefined offset: 2 Ruska882009 Помощь студентам 1 18.11.2009 15:16