gpt4 book ai didi

php - sql 无法在另一个页面的 Session_start() 内工作

转载 作者:行者123 更新时间:2023-11-29 18:28:37 25 4
gpt4 key购买 nike

我的项目中使用了Session。登录成功后,在我的login.php页面中调用session_start()。然后它会转到另一个页面:repair_device.php。在 Repair_device.php 中,

isset($_SESSION["admin"])&&$_SESSION["admin"]==true //this can pass

和alert("testInDR")可以正确显示。但sql什么也没做。

如果我在repair_device.php中选择直接登录,例如:

$conn = new PDO('mysql:host=localhost;port=3306;dbname=xxx' , 'xxx' , 'xxxx');
$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);

sql=“select * from hpc_repairdevice order by datetime desc”工作正常。

这是login.html的代码

<form class="login" action="index.php" method="post">
<span>account:</span><input type="text" name="username" /><br /><br />
<span>password:</span><input type="password" name="password"/><br /><br />
<span>verificationCode:</span><input type="text" name="code" /><img id="code" src="create_code.php" alt="another" style="cursor: pointer; vertical-align:middle;" onClick="create_code()"/><br /><br />
<input type="submit" style="margin-left:35%" value="logon" /><input type="reset" value="" /> </div>
</form>

这是index.php的代码

<?php
session_start();
if(!isset($_GET['log_out']) && ($_POST['code'] != $_SESSION['code']))
{
echo "wrong verificationCode!<br />" . "<meta http-equiv='refresh' content='2;url=index.html'>";
}
if(!isset($_GET['log_out']))
{
$user = $_POST['username'];
$pwd = $_POST['password'];
if($user!=null & $pwd!=null)
{
try
{
$conn=new PDO('mysql:host=x.x.x.x;port=3306;dbname=hpc',$user,$pwd);
}
catch(PDOException $e)
{
echo "faile<br />".$e->getMessage()."<meta http-equiv='refresh' content='1;url=index.html'>";
}

if($conn)
{
$_SESSION["admin"]=true;
$stas = $conn->getAttribute(PDO::ATTR_CONNECTION_STATUS);
.....
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='http://xx.xx.xx.xx/repair_device.php'";
echo "</script>";
.....
}
}
}
?>

这是create_code.php的代码

<?php
session_start();
//create pic
header("Content-type: image/png");
.....
$_SESSION['code'] = $verifyCode; //stor verification code in session
......
?>

这是repair_device.php的代码

<!DOCTYPE html>
<html>
<head>
......
</head>
<body>
<?php
session_start();
// $conn = new PDO('mysql:host=localhost;port=3306;dbname=xxx' , 'xxx' , 'xxxx');
//$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);
$admin=false;
if(isset($_SESSION["admin"])&&$_SESSION["admin"]==true)
{
alert("testInDR");
$sql = "select * from hpc_repairdevice order by datetime desc";
......
$sel=$conn->query($sql);
......
}
?>
</body>
</html>

我认为 session ID 应该传递到 Repair_device.php,但我不知道如何传递。谁能帮助我?

最佳答案

数据库连接不随 session 一起传递。一种流行的方法是在需要访问数据库(或自动加载器)的任何页面的头部包含一个数据库引导文件。

<?php //index.php, repair_device.php
require_once('db.php');

//rest of page

并在数据库页面中设置连接(并可能启动 session )

<?php // db.php
session_start();
$conn = new PDO('mysql:host=localhost;port=3306;dbname=xxx' , 'xxx' , 'xxxx');
$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);

那么 PHP 渲染的结果将是

<?php // index.php
session_start();
$conn = new PDO('mysql:host=localhost;port=3306;dbname=xxx' , 'xxx' , 'xxxx');
$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);

//rest of page

在任何需要它的页面上包含连接只需要一行代码。

关于php - sql 无法在另一个页面的 Session_start() 内工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45930155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com