sql >> データベース >  >> RDS >> Mysql

phpmysql+セッションの問題

    index.php内 'session_start();'

    の後に条件を最上位に置く必要があります
    if($_SESSION['username'])
    {
        header("Location: home.php");
        exit();
    }
    

    whileループでは、header("Location: home.php");である必要があります。 header("Location: index.php");の代わりに

    home.php内 phpタグを開いた後に一番上に置くべきページ

    ob_start();
    session_start();
    

    それがうまくいくことを願っています。

    ++++++++++++++++++++++++++++++++++++++++++

    このコードを使用するindex.php

    <?php
    require_once('connect.php');
    ob_start();
    session_start();
    //checked wether the user is loged in  or not 
    
    $user = $_SESSION['username'];
    
    if($_SESSION['username'])
    {
        $user = $_SESSION['username'];
        header("Location: home.php");
        exit();
    }
    
    // login script
    if(isset($_POST['username'])&& isset($_POST['password']))
    {
        $user_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['username']);
        $user_password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['password']);
        $md5password = md5($user_password);
        $sql = mysql_query("SELECT id FROM members WHERE username = '".$user_login."' AND password = '".$user_password."'") or die ("could not select from database");
    
        $userCount = mysql_num_rows($sql);
        if($userCount ==1)
        {
            while($row = mysql_fetch_array($sql))
            {
    
                $id = $row['id'];
            }
    
            $_SESSION['id'] = $id;
            $_SESSION['username'] = $user_login;
            $_SESSION['password'] = $user_password;
            header("Location: home.php");
            exit();
        }
        else
        {
             echo "that info is incorrect";
             exit();
        }
    }
    
    
    ?>
    <!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>Untitled Document</title>
    </head>
    
    <body>
    <form action="login.php" method="post">
    
    <input name="username" type="text" value="username" size="32" />
    <input name="pass" type="password" value="password" size="32" />
    <input name="login" type="submit" value="login" />
    
    </form>
    
    </body>
    </html>
    <?php  ob_end_flush(); ?>
    

    home.php

    <?php
    ob_start();
    session_start();
    
    //home.php
    $user = $_SESSION['username'];
    if(!isset($_SESSION['username']))
    {
        header("Location: index.php");
        exit();
    }
    else
    {
    
        echo "hi $user you are loged in //Welcome to our website <a href=\"logout.php\">Logout</a>";
    
    
    }
    ?>
    

    logout.php 正しい



    1. phpを使用してGROUP_CONCAT('column x')値を返す

    2. 正規表現を使用してフィールドの一部を選択する

    3. SQL-転置する方法は?

    4. JDBCを使用してストアドプロシージャから*すべて*を取り戻す方法