PHP会话

PHP会话,php,session,Php,Session,我有以下问题,会话没有保留信息。 所以我可能犯了很多错误但我不知道为什么, 如果你还看到什么没用的/丢失的,请你说出来。 这是一个登录脚本 我认为这很好,直到我在另一个页面home.php中看到它找不到会话id 我是PHP新手,但如果有人能帮助我,那就太好了: 这是密码 <?php error_reporting(E_ALL ^ E_NOTICE); ini_set( 'display_errors', '0' ); session_start();

我有以下问题,会话没有保留信息。 所以我可能犯了很多错误但我不知道为什么, 如果你还看到什么没用的/丢失的,请你说出来。 这是一个登录脚本

我认为这很好,直到我在另一个页面home.php中看到它找不到会话id

我是PHP新手,但如果有人能帮助我,那就太好了: 这是密码

    <?php
    error_reporting(E_ALL ^ E_NOTICE);
    ini_set( 'display_errors', '0' );
    session_start();
    include ('db_connect.php');
    include("error.php");

    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
        //formulier verstuurd
        $username = $_POST['username'];
        $password = $_POST['password'];

        //protect MySQL Injection
        $username = mysql_real_escape_string($username);
        $password = mysql_real_escape_string($password);

        $query = mysql_query("SELECT * FROM inlog WHERE username = '$username' AND password = '$password' ") or die(mysql_error());
        $rows = mysql_num_rows($query);

        if($rows == 1) {
        $_SESSION['userername'] = $username;
        header("location:home.php");
        }       
        else
        {
            $wronguser = "<div id='wronguser'>*Verkeerd gebruikersnaam of wachtwoord</div>";        
            }           
        }

        ?>
//dbconnect.php

    <?php
    $connect = mysql_connect( 'localhost', 'root', 'root' );
    mysql_select_db('applicatie', $connect);
    ?>
//error.php

    <?php
    ini_set('display_errors',1); 
     error_reporting(E_ALL);
    ?>
更新。
我不能再登录了,因为会话不再是真的:/

记住会话\u启动;需要位于使用会话的所有页面上。 最好将其写入头文件,并将其包含在每页上


另外,您的会话变量名为userName,如果您使用headerLocation重定向脚本,则拼写错误很小的PHP无法编写会话。。。。据我所知,只有当您重定向到同一服务器上的脚本时,才会发生这种情况。是否有人可以确认这一点

您需要使用以下命令明确关闭会话:

试试这个

error_reporting ( E_ALL ^ E_NOTICE );
ini_set ( 'display_errors', '0' );
session_start ();
include ('db_connect.php');
include ("error.php");

/**
 * Check Login
 */
if (isset ( $_POST ['username'] ) && isset ( $_POST ['password'] )) {

    $username = $_POST ['username'];
    $password = $_POST ['password'];

    // protect MySQL Injection
    $username = mysql_real_escape_string ( $username );
    $password = mysql_real_escape_string ( $password );

    $query = mysql_query ( "SELECT * FROM inlog WHERE username = '$username' AND password = '$password' " ) or die ( mysql_error () );
    $rows = mysql_num_rows ( $query );

    if ($rows == 1) {
        $_SESSION ['userername'] = $username;
        $_SESSION ['auth'] = true;
        header ( "location:home.php" );
    }
    else
    {
        $_SESSION ['userername'] = false;
        $_SESSION ['auth'] = false;
    }
}

/**
 * Logout
 */

if (@$_GET ['cmd'] == "logout") {
    $_SESSION = array ();
}

/**
 * Error Output
 */

if (! $_SESSION ['auth'] || ! $_SESSION ['userername']) {
    $wronguser = "<div id='wronguser'>*Verkeerd gebruikersnaam of wachtwoord</div>";
    die ( $wronguser );
}
我希望这有帮助


谢谢

请尝试将会话从第一行开始,如下所示

<?php
session_start();
error_reporting(E_ALL ^ E_NOTICE);
ini_set( 'display_errors', '0' );

那么,$行包含什么呢?会话变量赋值是错误的,$\u Session['userName']您记得在home.php中启动会话吗?我们可以看看你如何使用home.php中的会话吗?@pharalia已经编辑过了;看看发生了什么我把它放在了所有的页面上,include函数是一个很好的提示;但是它没有解决我的问题警告:无法修改标题信息-标题已经由输出发送,开始于/Users/Rinke/Documents/MAMP/3e periode/index.php:1 in/Users/Rinke/Documents/MAMP/3e periode/index.php第24行///第24行确实是标题,仍然应该存储会话变量。但很明显,头球有问题。检查error.php和db_connect.php,查看您是否在任何一个theseerror.php中使用echo或发送头:而db_connect只是一个普通的db connect,error.php似乎有点用。已经发送的头是另一个问题。这意味着,在index.php的第1行中,您已经开始了输出。魔兽世界前是否有空格或空行,感谢您快速且良好的回复,无论如何,我仍然有无法修改标题信息,该错误是由db_connect.php或error.php导致的,因为大多数都包含空格。。。。在行或的末尾,在调用标头之前,您正在输出一个值检查您的文件。。如果你有同样的问题,我可以给你一个itIm的转折点,包括error.php和DBconnect.php。给我20秒。这是奇怪的事情,爸爸,我没有任何错误。屏幕只是刷新,而会话可能会启动。
<?php
session_start();
error_reporting(E_ALL ^ E_NOTICE);
ini_set( 'display_errors', '0' );