php中的会话变量未被存储

时间:2013-01-03 12:50:11

标签: php session

所以我有这个表格要求用户和密码:

    <?php
    $emmagatzemarSessions="/u/alum/u1920477/public_html/tmp";
    ini_set('session.save_path',$emmagatzemarSessions);
    session_start();
    include 'vars.php'; 
?>
<html>
<h1>Identificacio</h1>
<h3>Introdueix el teu usuari i contrasenya per entrar a oracle</h3>
<hr>
<form action="menu.php" method="post">

    Usuari: 
    <input  type="text" 
            name="user" />
    Contrasenya: 
    <input 
            type="password" 
            name="pass" />

<input type="submit"/>
</form>
<hr>
<?php   

    $_SESSION["user"] = $_POST["user"];
    $_SESSION["pass"] = $_POST["pass"];
?>
</html>

但是,在下一个文件'menu.php'中,它说我无法访问数据库。我插入的用户和密码是正确的。以下是我正在使用的连接代码:

    #!/usr/bin/php-cgi
<?php
    $emmagatzemarSessions="/u/alum/u1920477/public_html/tmp";
    ini_set('session.save_path',$emmagatzemarSessions);
    session_start();
    include 'vars.php'; 

    $conn = oci_connect($_SESSION["user"], $_SESSION["pass"], 'oracleps');

    echo("username is: " . $_SESSION["user"]);
    if (!$conn) { 
    echo "<p>No hem pogut connectar amb la BD.</p>";

?>
<html>
        <br><br><br>
        <div id="tornar">
            <li><a href="index.php">Tornar a l'inici</a></li>
        </div>
<?php 
    die;
    }
?>
<head>
<title>Menú empresa</title>
</head>
<body>
<div id="menu">
  <h1>Menú</h1>
</div>
<div id="alta">
  <ul>
    <li><a href="alta.html">Donar d'alta un client</a></li>

    <li><a href="consulta.php">Consultar vehicles disponibles</a></li>

    <li><a href="llogar.html">Llogar un vehicle</a></li>

    <li><a href="retorn.html">Retornar un vehicle llogat</a></li>

    <li><a href="revisio.php">Veure revisions</a></li>
  </ul>
</div>
        <br><br><br>
        <div id="tornar">
            <li><a href="index.php">Tornar a l'inici</a></li>
        </div>
</body>
</html>

我已经找了类似的问题,问我的同事谁做同样的事情,但我不知道为什么这不起作用! 如果我能得到你们的帮助,那将是惊人的! 非常感谢。

使用两个文件的完整代码进行编辑。忽略4个第一行。我希望你们能帮助我,因为我不知道我做错了什么!

2 个答案:

答案 0 :(得分:2)

这行代码应位于您要跟踪会话的每个php页面的顶部:

session_start();

您还应该始终检查变量是否真正从表单发送,如下所示:

if(isset($_SESSION['username']))
{
   // do something
}

如果您确定连接数据库的逻辑正常,则应记录从表单中收到的数据,以检查表单是否正确:

error_log("username is: " . $_POST["username"]);

答案 1 :(得分:0)

在每个只能由用户访问的页面上启动会话,如果未设置,则重定向用户

session_start(); //start session

if (!isset($_SESSION['user'])) {    
redirect_user();    
}

function redirect_user() { //redirect user to home page
    $url = BASE_URL . 'index.php'; // Define the URL.
    ob_end_clean(); // Delete the buffer.
    header("Location: $url");
    exit(); #quit
}