未存储php中的会话变量
因此,我有一个表单要求输入用户和密码:未存储php中的会话变量,php,session,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>
<?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>
识别
引见每一个先知
Usuari:
康塔塞尼亚:
然而,在下一个文件“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>
#/usr/bin/php-cgi
门努埃姆普雷萨
门努
我也找过类似的问题,问过做同样事情的同事,但我不知道为什么这样做不起作用!
如果我能得到你们的帮助,那太棒了!
非常感谢
使用两个文件的完整代码进行编辑。忽略前4行。我希望你们能帮助我,因为我不知道我做错了什么 这行代码应该位于要跟踪会话的每个php页面的顶部:
session_start();
您还应始终检查变量是否真的从表单发送,如下所示:
if(isset($_SESSION['username']))
{
// do something
}
如果确定连接到数据库的逻辑正常,则应记录从表单收到的数据,以检查其是否正确:
error_log("username is: " . $_POST["username"]);
在每个只能由用户访问的页面上启动会话,如果未设置,则重定向用户
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
}
您是否使用
会话\u start
启动会话?您在web表单上请求数据库登录凭据?我希望这只是一个供您自己使用的DB管理工具,而不是面向公众的应用程序?可能与Please put session_start()重复;是两个文件中的第一行,就在会话_start()之后;每一页都有,是的。我在表单后的下一页使用您的错误日志,当我像您一样键入时,使用$\u POST[“user”],它会显示用户,但如果我尝试$\u SESSION[“user”]则不会。所以很明显,我想在表单中存储的信息不会存储在任何地方。嗯……这似乎不太正确。。。你有没有像这样尝试过:$\u SESSION[“user”]=$\u POST[“user”];错误日志($_SESSION[“user”];?另外,如果您可以复制更多的php代码,这将是一件好事,可能错误在其他地方。谢谢mike,我知道用这两个文件的完整代码编辑了它。