如何开始会话?

时间:2014-10-07 11:12:50

标签: php mysql session

当用户输入mysite.com/earth.php时,我希望我的earth.php文件找到用户ID。我想要这个,因为我希望将id放在一个sql代码中,当用户输入mysite.com/earth.php时,该代码将被发送到数据库。我想我必须在用户登录时启动会话以帮助earth.php找到用户ID?有人可以帮助我,因为我不知道该怎么做。

这是我的earth.php文件:

<?php
    error_reporting(E_ALL);
ini_set('display_errors', '1');

    session_start();
$id = $_SESSION['id'];
session_write_close();

    $verbindung = mysql_connect("localhost","root","******");
    mysql_select_db("lan");

if(isset($_SESSION['id'])) {
  mysql_query("UPDATE users SET ally='3' WHERE id='$id'");  
}

     ?>

当他们进入mysite.com/earth.php时,这是我希望将用户更改为3的值 http://prntscr.com/4turly

这是我的login.php文件 http://prntscr.com/4tm6jz

请帮助,我一直试图解决这个问题很长一段时间。

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

<?php

define('DB_TYPE', 'mysql');
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'dbname');
define('DB_USER', 'root');
define('DB_PASS', 'password');

session_start();

try {
    // create a new instance of a PDO connection
    $db = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
    // if the connection fails, display an error message
    echo 'ERROR: ' . $e->getMessage();
}

if(isset($_POST['username']) && !empty($_POST['username'])) {

    $username = $_POST['username'];

    $sql = 'SELECT userid, username FROM users WHERE username = :username';

    $stmt = $db->prepare($sql);
    $stmt->bindValue('username', $username);
    $stmt->execute();
    $result = $stmt->fetchAll();

    $_SESSION['id'] = $result[0]['userid'];

    var_dump($_SESSION['id']);  //this will show the the session
}

?>

答案 1 :(得分:1)

从我的代码中可以看出,$_SESSION['id']为空。为它设置一个值。我看到你编辑了你的帖子。然后你必须在开始会话后包括你的文件,如

session_start(); include_once 'path/to/login/php/login.php;