|
|
|
| Пытаюсь сделать регестрацию на сайте, вроде все норм, ну есть одно "но", в когде есть exit, после него нечего не происходит, ну а мне нужно сдеть так, чтобы после него пропускался именно этот блок php, и дальше все началось считываться. Ну вот код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Главная</title>
<link href="Style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body p {
color: #FFF;
}
-->
</style>
</head>
<body>
<table width="1099" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="1099" height="200" border="0" cellpadding="0" cellspacing="0"><?php include "blocks/head.php"; ?></td>
</tr>
<tr bgcolor="#65aeeb">
<td height="248"><table width="1100" height="405" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="223" height="405" valign="top" border="0" cellpadding="0" cellspacing="0"><?php include "blocks/menu.php"; ?></td>
<td width="645" valign="top" border="0" cellpadding="0" cellspacing="0">
<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
}
else {
echo "Ошибка! Вы не зарегистрированы.";
}
?>
</td>
<td width="218" valign="top" border="0" cellpadding="0" cellspacing="0"> </td>
</tr>
</table></td>
</tr>
<tr>
<td><?php include "blocks/boot.php"; ?></td>
</tr>
</table>
</body>
</html>
Там где например exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
Если выводится эта надпись, то дальше перестается грузится сайт, т.е. загружается на половину, т.к. этот код в середине, как сделать чтобы дальше загружалось все? А если выводится надпись echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>"; то загружается дальше... как я понял, тут проблема в exit, как сделать чтобы нормально все было, подскажите пожалуйста! | |
|
|
|
|
|
|
|
для: revered
(26.01.2012 в 22:46)
| | В строке
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
этот самый exit является командой прервать выполнение всего, что находится ниже этой строки. | |
|
|
|
|
|
|
|
для: Yuriev
(27.01.2012 в 00:21)
| | ну я понимаю. Ну как вы поняли, это код, для регестриции, если убрать этот exit, то тогда будут какието ошибки в регестриции, ну например 2 пользователя в таблицу с оденаковыми именнами попадут или я не правельно понимаю? можно спокойно этот exit убрать и нормально работать все будет? | |
|
|
|
|
|
|
|
для: revered
(27.01.2012 в 01:21)
| | Можно вместо exit и предложения нажать на ссылку сразу отправить пользователя на главную или любую другую страницу
header('Location: index.php');
|
C одинаковыми именами не попадут, так как вы делаете проверку на существование такого логина. Без проверки да, такое возможно. | |
|
|
|
|
|
|
|
для: revered
(27.01.2012 в 01:21)
| | Что-то я вас не понимаю... Вы сами себе противоречите.
Вы сперва отвечаете на вопрос: "если убрать этот exit, то тогда будут какието ошибки в регестриции",
а потом его же задаете: "можно спокойно этот exit убрать и нормально работать все будет?"
Ну работать будет, а нормально или нет - это уж вам решать. Если с ошибками - это нормально, значит нормально.
Другой вопрос, что надо бы переделать этот код так, чтоб не прерывалось выполнение, а ошибка фиксировалась, выводилась пользователю и повторно выводилась форма регистрации с предложением ввести другой логин. | |
|
|
|