我希望我的用户输入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']));
}
?>
答案 0 :(得分:0)
使用SESSION对象的所有页面顶部都应有session_start();
。确保首先检索用户ID的页面是使用$_SESSION['id'] = $id;
将其存储在会话中的用户ID。
然后在Earth.php上,您需要做的就是$id = $_SESSION['id'];
从会话中检索它。无需调用session_write_close();
函数。
答案 1 :(得分:0)
在我看来,逻辑不正确,因为:
以下几行无效
$ id = $ _SESSION [&#39; id&#39;]; $ _SESSION [&#39; id&#39;] = $ id;
尝试在会话结束后写入会失败
session_write_close(); $ _SESSION [&#39; id&#39;] = $ id;
以下内容可能会返回false
如果(isset($ _ SESSION [&#39; ID&#39;]))
改为使用
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']));