За последние 24 часа нас посетили 18510 программистов и 1706 роботов. Сейчас ищут 694 программиста ...

Не могу вычислить ошибку

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 15 янв 2012.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Код авторизации. В результате должен переходить на указанную страницу, но этого не происходит. Остается на этой странице, т.е. пустая страница.

    Код (Text):
    1. include ("connect_db.php");
    2. if (isset($_POST['email']))
    3. {
    4.     $passwordHash = md5($_POST['password']);
    5.     $email = $_POST['email'];
    6.     if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $email))
    7.     {
    8.         die('Вы неправильно ввели свой адрес электронной почты!');
    9.     }
    10. }
    11. else
    12. {
    13.     $email = $_POST['email'];
    14.     $res = mysql_query("SELECT uid FROM users WHERE email='$email' AND password='$passwordHash'")or exit('Проблема - '.mysql_error());
    15.     if (mysql_num_rows($res) < 1)
    16.     {
    17.         die('Пользователя с таким адресом электронной почты не существует!');
    18.     }
    19.     session_start();
    20.     $token = md5(time().$email);
    21.     if ($_POST['remember'])
    22.     {
    23.         setcookie('token', $token, time() + 60 * 60 * 24 * 365);
    24.         mysql_query("UPDATE users SET token='$token' WHERE email='$email'");
    25.     }
    26.    
    27.     if (isset($_SERVER['HTTP_REFERER']))
    28.     {
    29.         header ("location: ".$_SERVER['HTTP_REFERER']);
    30.     }
    31.     else
    32.     {
    33.         header ("location: shopping_cart.php");
    34.     }
    35. }
    Не могу найти ошибку
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    У тебя сначала идет проверка if на существование email
    $email = $_POST['email'];
    и в противном else случае опять
    $email = $_POST['email'];
    В одном случае email имеет какое то значение, а во втором оно пустое.
     
  3. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    В первом случае - проверка, что это именно адрес электронной почты,
    Во втором - проверка на существование.
    Так что все тут нормально.
    Где-то в другом месте ошибка
     
  4. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    У тебя два взаимоисключающих условия.
    Если есть $_POST['email'] проходит проверка на правильность, и соответственно надо делать выборку из базы
    Иначе у тебя НЕТ $_POST['email'], но ты вдруг пытаешься сделать проверку в базе по существованию $_POST['email']
     
  5. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Вот сейчас врубился! Спасибо! Пришлось весь код переделывать