我希望我的用户输入mysite.com/earth.php,earth.php将向我的数据库发送一个sql代码,该代码将更新users表中的一列。因此,我希望进入该页面的用户更改此值http://prntscr.com/4wet3o"-1"到"3"。不是针对所有人,只是针对进入的用户。但它不起作用,因为earth.php必须找到用户id,而它找不到?我需要开始上课吗?我的数据库中有一个会话表,如下所示http://prntscr.com/4wev2k有什么帮助吗?
用户必须登录才能输入Earth.php编辑:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
session_start();
$_SESSION['id'] = 2; //Or a valid user ID
$verbindung = mysql_connect("localhost","root","*****");
mysql_select_db("lan");
if(isset($_SESSION['id']))
mysql_query(sprintf("UPDATE users SET ally='3' WHERE id='%s'", $_SESSION['id']));
}
?>
所有使用SESSION对象的页面顶部都应该有session_start();
。确保首先检索用户id的页面是使用$_SESSION['id'] = $id;
将其存储在会话中的页面。
然后在Earth.php上,您所需要做的就是$id = $_SESSION['id'];
从会话中检索它。无需调用session_write_close();
函数。
在我看来,逻辑是不正确的,因为:
-
以下线路是不起作用的
$id=$_SESSION['id'];$_SESSION['id']=$id;
-
在会话关闭后尝试写入将使失败
session_write_close();$_SESSION['id']=$id;
-
以下可能会返回错误的
if(isset($_SESSION['id'])
使用
if($id) { ... }
---根据更改的来源添加----
并替换
mysql_query("UPDATE users SET ally='3' WHERE id='$_SESSION['id']'");
带有
mysql_query(sprintf("UPDATE users SET ally='3' WHERE id='%s'", $_SESSION['id']));