【发布时间】:2018-04-02 01:16:52
【问题描述】:
一整天我都遇到了一些大问题。
我正在尝试保存一个 SESSION 变量,然后将其打印到另一个 PHP 文件中,但是该变量没有跨页面保存。我本质上是使用 SQL 制作登录系统,然后能够使用用户名作为 SESSION 变量查看用户详细信息。
我做了很多研究,似乎是我的重定向 URL 导致了这个问题。它必须是使用的真实 URL,而不是 HTTP,因为它不会传递 SESSION 变量。
我已经测试了该变量是通过直接打印到源 PHP 文件中来存储的,并且工作正常。它只是没有被转移,它返回一个空白数组。
我正在从 API 路由 PHP 文件调用我的方法。我不认为这会导致问题吗?
这是我的设置:
API PHP 文件:
app->post('/api/customer/login/{Username}/{PassW}', function(Request $request, Response $response){
$Username = $request->getParam('Username');
$PassW = $request->getParam('PassW');
$PassW = md5($PassW);//FIND NEW WAY OF HASHING AS MD5 IS DEPRECIATED
$sql = "SELECT * FROM login WHERE Username= '$Username' AND PassW='$PassW' LIMIT 1";
try{
$db = new db();
$db = $db->connect();
$stmt = $db->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($result) == 1){
session_start();
$_SESSION['Username'] = $Username;
echo "<script type='text/javascript'>alert('Correct!');
window.location.href='http://localhost/testing/yourprofile.php';
</script>";
exit();
测试会话变量已设置 PHP 文件:
<?php
session_start();
print_r($_SESSION);
?>
我对这一切都很陌生,所以如果这对你们来说很简单,我很抱歉。
大爱。
【问题讨论】:
-
sesssion_start()需要在文件的开头。也在 API PHP 文件中。或者至少在向浏览器输出任何内容之前。 -
你用的是什么框架,我很好奇这个
->post('/api/customer/login/{Username}/{PassW} -
它叫 Slim PHP 框架
-
这就是我的想法,谢谢,我从未使用过它,但我以前见过它。这与我正在构建的框架相似。 AKA,它是事件驱动的。
-
知道我的问题可能是什么吗?
标签: php html api session-variables