Задать вопрос
@Rasul_El-Sheikh

Кто может помочь разобраться в коде авторизации-регистрации?

Есть такие листинги:
<?php
session_start();
$dbhost = "localhost"; // Адрес сервера MySQL. На локальном сервере этот параметр всегда будет 'localhost', но на хостинге он соответствует адресу хостера.
$dbname = "comptaxi"; // Имя базы данных 
$dbuser = "root"; // Пользователь базы данных
$dbpass = ""; // Пароль пользователя базы данных  

mysql_connect($dbhost, $dbuser, $dbpass) or die("Ошибка MySQL: " . mysql_error());  
mysql_select_db($dbname) or die("Ошибка MySQL: " . mysql_error());


<?php include "base.php"; ?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
<title>Вход пассажир</title>
<link href="css/style.css" type="text/css" rel="stylesheet">
</head>
<body>
    <div id="wrapper">
      <div id="header">
	<div id="logo">
		<td>
		  <img src="images/logo.png" alt="Логотип" />  
		</td>
	</div>	
	<div id="menu">
		   <ul> 
		    <li>
			<a href="index.html">Как это работает</a>
		    </li>
		    <li>
			<a href="faqvod.html"><span>Я-водитель</span></a>
		    </li>
		    </ul>
	</div>
	</div>
<div id="main">
    <?php
    if(!empty($_POST['Username']) && !empty($_POST['Password']))  
{  
    $username = mysql_real_escape_string($_POST['username']);  
    $password = md5(mysql_real_escape_string($_POST['password']));
    $email = mysql_real_escape_string($_POST['email']);
 
    $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");  
 
    if(mysql_num_rows($checkusername) == 1)  
    {  
        echo "<h1>Ошибка</h1>";  
        echo "<p>Извините, такое имя пользователя уже используется. Вернитесь назад и попробуйте снова.</p>";  
     }  
     else  
     {  
        $registerquery = mysql_query("INSERT INTO users (Username, Password, EmailAddress) VALUES('".$username."', '".$password."', '".$email."')");  
        if($registerquery)  
        {  
            echo "<h1>Успех!</h1>";  
            echo "<p>Ваша учётная запись создана. <a href=\"index.php\">Авторизуйтесь</a>.</p>";  
        }  
        else  
        {  
            echo "<h1>Ошибка</h1>";  
            echo "<p>Мы не смогли вас зарегистрировать. Вернитесь назад и попробуйте снова.</p>";      
        }         
     }  
}  
else  
{  
    ?>  

   <h1>Регистрация</h1>  

   <p>Пожалуйста заполните несколько полей ниже.</p>  

    <form method="post" action="register.php" name="registerform" id="registerform">  
    <fieldset>  
        <label for="username">Логин:</label><input type="text" name="username" id="username"><br>  
        <label for="password">Пароль:</label><input type="password" name="password" id="password"><br>  
        <label for="email">Email:</label><input type="text" name="email" id="email"><br>  
        <input type="submit" name="register" id="register" value="Зарегистрироваться">  
    </fieldset>  
    </form>  

   <?php  
}  ?>
    </div>
    <br>
<div id="foot">
    <p>
	<b>Копирайт!</b>
    </p>
</div>    
    </div>
</body>
</html>


<?php 
include "base.php"; 
$_SESSION = array(); 
session_destroy(); 
?> 
<meta http-equiv="refresh" content="0;login.php">


<?php include "base.php";
?>	
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
<title>Вход пассажир</title>
<link href="css/style.css" type="text/css" rel="stylesheet">
</head>
<body>
    <div id="wrapper">
      <div id="header">
	<div id="logo">
		<td>
		  <img src="images/logo.png" alt="Логотип" />  
		</td>
	</div>	
	<div id="menu">
		   <ul> 
		    <li>
			<a href="index.html">Как это работает</a>
		    </li>
		    <li>
			<a href="faqvod.html"><span>Я-водитель</span></a>
		    </li>
		    </ul>
	</div>
	</div>
<div id="main">
    <?php
    if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username']))  
{  
    // даём доступ пользователю к главной странице
?>  
     <h1>Закрытый раздел!</h1>  
     <p>Привет, <b><?=$_SESSION['Username']?></b>. Твоя почта - <b><?=$_SESSION['EmailAddress']?></b>.</p>
     <p><a href="logout.php">Выход</a></p>
    <?php  
}    
elseif(!empty($_POST['username']) && !empty($_POST['password']))  
{  
    // позволим пользователю войти на сайт 
    $username = mysql_real_escape_string($_POST['username']);  
    $password = md5(mysql_real_escape_string($_POST['password']));  
 
    $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'");  
 
    if(mysql_num_rows($checklogin) == 1)  
    {  
        $row = mysql_fetch_array($checklogin);  
        $email = $row['EmailAddress'];  
 
        $_SESSION['Username'] = $username;  
        $_SESSION['EmailAddress'] = $email;  
        $_SESSION['LoggedIn'] = 1;  
 
        echo "<h1>Успех!</h1>";  
        echo "<p>Сейчас вы будете перенаправлены в закрытый раздел.</p>";  
        echo "<meta http-equiv='refresh' content='2;login.php'>";  
    }  
    else  
    {  
        echo "<h1>Ошибка</h1>";  
        echo "<p>Прости, но мы не нашли такого аккаунта. Можешь <a href=\"index.php\">попробовать ещё раз</a>.</p>";  
    } 
}  
else  
{  
    // выводим форму для авторизации  
    ?> 
   <h1>Авторизация</h1>  
 
   <p>Спасибо за то, что пришли! Войдите или <a href="register.php">зарегистрируйтесь</a>.</p>  
 
    <form method="post" action="index.php" name="loginform" id="loginform">  
    <fieldset>  
        <label for="username">Мобильный номер:</label><input type="text" name="username" id="username"><br>  
        <label for="password">Пароль:</label><input type="password" name="password" id="password"><br>  
        <input type="submit" name="login" id="login" value="Войти">  
    </fieldset>  
    </form>  
 
  <?php  
}  ?>  
    </div>
    <br>
<div id="foot">
    <p>
	<b>Копирайт!</b>
    </p>
</div>    
    </div>
</body>
</html>


Суть проблемы. В форме регистрации, после того как ввожу данные, форма просто обновляется и становится пустой. То есть не происходит никаких действий подтверждения регистрации. А вводя данный в форму авторизации, могу вообще войти на сайт без регистрации, то есть с данными "от фонаря". Подскажите, почему так происходит, у автора кода все получается как надо.
  • Вопрос задан
  • 302 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Immortal_pony
@Immortal_pony Куратор тега PHP
Качество кода не выдерживает никакой критики, но, что касается сути пробелмы, то кажется, она кроется в этих строках:

$checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");  
 
    if(mysql_num_rows($checkusername) == 1)


Данные записываются в переменную checklogin, а количество строк проверяется в переменной checkusername
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ответ написан
Комментировать
AloneCoder
@AloneCoder
[object Object]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы