Форма входа в Jquery сводит меня с ума - PullRequest
4 голосов
/ 09 октября 2011

Итак, у меня есть домашняя страница, на которой пользователь может войти в систему. Как только они войдут в систему, мне нужно, чтобы они перенаправили их в index.php, который просто извлекает туда информацию. Jquery вызывает index.php, где он запускает проверку Mysql, если пользователь не существует, он предупреждает о недопустимом пользователе. Теперь, если это так, мне нужно отправить их обратно в index.php. Ее есть index.php

    <?php
    include_once 'includes/membersclass.php';
    session_start();
    $member = new MEMBERS();

    if(!isset($_SESSION['id'])) {
        if($_POST['action'] == true) {
            $result = $member->login($_POST);
            if($result) {
                $_SESSION['id'] = $result;
                echo $_SESSION['id'];
            } else {
                 return false;
            }
        } 

        if($_POST['signup'] == 'true') {
            $result = $member->signup($_POST);
            if($result) {
                $_SESSION['id'] = $result;
            } else {
                header("Location: root.php");
            }
        } 
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel='stylesheet' type='text/css' href='css/members.css' />
    </head>
    <body>
        <div id="calendar_container">
            <?php $member->drawCalendar(2, 2011); echo $_SESSION['id']; ?>
        </div>
    </body>
    </html>

Как вы можете видеть, Jquery делает первоначальный вызов index.php с сообщением и возвращает ответ. Я установил сеанс для хранения идентификатора пользователя. На этой же странице будет отображаться профиль пользователя. Как мне вернуться сюда при успешном входе в систему. Я даже делаю это правильно, если это должно быть отдельно от PHP для начала. Тьфу, пожалуйста, помогите.

1 Ответ

0 голосов
/ 13 октября 2011

Вопрос немного расплывчатый, но если я правильно понимаю, вы хотите перезагрузить страницу index.php после успешного входа.

if(!isset($_SESSION['id'])) {
    if($_POST['action'] == true) {
        $result = $member->login($_POST);
        if($result) {
            $_SESSION['id'] = $result;
            echo $_SESSION['id'];
        } else {
             return false;
        }
    } 

Если я не ошибаюсь, этот фрагмент кода проверяет, вошел ли пользователь в систему. Если нет, вы проверяете, выдавала ли предыдущая страница Jquery «действие» (которое я предполагаю, является входом в систему) или 'регистрация' (я предполагаю, что это создание новой учетной записи).

В этом случае, если выбрано 'действие', вы проверяете, существует ли пользователь ($ result = $ member-> login ($ _ POST);) и, если он существует, вы создаете идентификатор сеанса, а индекс - страница должна показать профиль.

Поскольку $ _SESSION ['id'] был назначен только после загрузки страницы, он не проверяет, был ли $ _SESSION ['id'] назначен снова. Таким образом, вы должны перезагрузить страницу, чтобы сделать это:

if(!isset($_SESSION['id'])) {
    if($_POST['action'] == true) {
        $result = $member->login($_POST);
        if($result) {
            $_SESSION['id'] = $result;
            echo $_SESSION['id'];
            header("Location: index.php");

        } else {
             return false;
        }
    } 

Теперь он будет снова вызывать index.php, он проходит после части if (! Isset ($ _ SESSION ['id'])), так как на этот раз сеанс создан, и к коду (которого еще нет присутствует здесь?), который позаботится о профиле.

Я должен предположить, что здесь немного, но скажите мне, насколько я близко.

PS:

if($_POST['action'] == true)

и

if($_POST['signup'] == 'true')

Если у вас есть истина без кавычек, один раз с. Я думаю, вы просто хотите проверить, какой из них установлен? Этого будет достаточно:

if(isset($_POST['signup']))

и

if(isset($_POST['action']))

Делает код более согласованным и менее подверженным ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...