开发者

Jquery login form driving me crazy

开发者 https://www.devze.com 2023-04-11 12:54 出处:网络
So I have a home page where a user can log in. Once they log in I need them to redirect them to index.php that just pulls there information. The Jquery makes a call to index.php where it runs a check

So I have a home page where a user can log in. Once they log in I need them to redirect them to index.php that just pulls there information. The Jquery makes a call to index.php where it runs a check against Mysql, if the user doesn't exist it alerts not a valid user. Now if it does I need to send them back to index.php. Hers is 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;开发者_Go百科
                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>

As you can see Jquery makes the initial call to index.php with a post and get the response back. I set the session to store the user id. On the same page is where the users profile will show. How do I get back here on successful login. Am I even doing it right, should this be separate from the PHP to begin with. Uggghhh, please help.


The question is a bit vague, but if I understand correctly you want to reload the index.php page after a successful login.

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

If I'm not mistaken, this piece of code checks if user is already logged in. If not, your checking if the previous Jquery page has given either an 'action' (which I assume is a login call) or a 'signup' (which I assume is to create a new account).

In this case, if 'action' is chosen, you check if the user exists ($result = $member->login($_POST);) and if he does, you create the session ID, and the index-page should show the profile.

Since the $_SESSION['id'] has only been assigned after the page has loaded, it does not check if the $_SESSION['id'] has been assigned again. So you have to reload the page to do this:

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;
        }
    } 

Now it will call the index.php again, it goes past the if(!isset($_SESSION['id'])) part, since this time the session is created, and to the code (which is not yet present here?) that will take care of the profile.

I have to assume quite a bit here, but tell me how close I am.

PS:

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

and:

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

Once you have true without quotes, once with. I think you just want to check which one is set? This will suffice:

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

and

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

Makes the code more consistent and less prone to errors.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号