Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как пропустить блок кода?
 
 автор: revered   (26.01.2012 в 22:46)   письмо автору
 
 

Пытаюсь сделать регестрацию на сайте, вроде все норм, ну есть одно "но", в когде есть 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">&nbsp;</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, как сделать чтобы нормально все было, подскажите пожалуйста!

  Ответить  
 
 автор: Yuriev   (27.01.2012 в 00:21)   письмо автору
 
   для: revered   (26.01.2012 в 22:46)
 

В строке
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
этот самый exit является командой прервать выполнение всего, что находится ниже этой строки.

  Ответить  
 
 автор: revered   (27.01.2012 в 01:21)   письмо автору
 
   для: Yuriev   (27.01.2012 в 00:21)
 

ну я понимаю. Ну как вы поняли, это код, для регестриции, если убрать этот exit, то тогда будут какието ошибки в регестриции, ну например 2 пользователя в таблицу с оденаковыми именнами попадут или я не правельно понимаю? можно спокойно этот exit убрать и нормально работать все будет?

  Ответить  
 
 автор: deimand   (27.01.2012 в 02:08)   письмо автору
 
   для: revered   (27.01.2012 в 01:21)
 

Можно вместо exit и предложения нажать на ссылку сразу отправить пользователя на главную или любую другую страницу

header('Location: index.php');

C одинаковыми именами не попадут, так как вы делаете проверку на существование такого логина. Без проверки да, такое возможно.

  Ответить  
 
 автор: Sfinks   (27.01.2012 в 02:14)   письмо автору
 
   для: revered   (27.01.2012 в 01:21)
 

Что-то я вас не понимаю... Вы сами себе противоречите.
Вы сперва отвечаете на вопрос: "если убрать этот exit, то тогда будут какието ошибки в регестриции",
а потом его же задаете: "можно спокойно этот exit убрать и нормально работать все будет?"

Ну работать будет, а нормально или нет - это уж вам решать. Если с ошибками - это нормально, значит нормально.

Другой вопрос, что надо бы переделать этот код так, чтоб не прерывалось выполнение, а ошибка фиксировалась, выводилась пользователю и повторно выводилась форма регистрации с предложением ввести другой логин.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования