如何为userid启动会话

时间:2014-10-16 08:29:57

标签: php mysql sql session

我希望我的用户输入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']));  
}

     ?>

2 个答案:

答案 0 :(得分:0)

使用SESSION对象的所有页面顶部都应有session_start();。确保首先检索用户ID的页面是使用$_SESSION['id'] = $id;将其存储在会话中的用户ID。

然后在Earth.php上,您需要做的就是$id = $_SESSION['id'];从会话中检索它。无需调用session_write_close();函数。

答案 1 :(得分:0)

在我看来,逻辑不正确,因为:

  1. 以下几行无效

    $ id = $ _SESSION [&#39; id&#39;]; $ _SESSION [&#39; id&#39;] = $ id;

  2. 尝试在会话结束后写入会失败

    session_write_close(); $ _SESSION [&#39; id&#39;] = $ id;

  3. 以下内容可能会返回false

    如果(isset($ _ SESSION [&#39; ID&#39;]))

  4. 改为使用

    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']));