Cookies PHP,维护会话

时间:2014-07-01 12:54:55

标签: php session cookies

如果我的网络服务器出现故障,我需要一些帮助来维护用户会话。 我配置了HAProxy,可以将用户请求传播到我的2个Web服务器。

假设用户A登录Web服务器1,如果Web服务器1失败,HAProxy会将请求发送到下一个可用的Web服务器,在本例中为Webserver 2。

我的问题是,当WebServer 1出现故障并将其发送到WebServer 2时,我无法保存用户会话。 所以我的朋友们建议我在PHP中使用cookies。 我不熟悉PHP中的cookie,但显然它与SESSIONS类似。

这是我的用户登录代码: 的的login.php     

  $conn_error = 'Could not connect.';
  $mysql_db = 'grupo5';
  if(!mysql_connect('localhost', 'vitorpnm', '') || !mysql_select_db($mysql_db)) {
  die($conn_error);
}

$username = $_POST['username'];
$password = $_POST['password'];

$userBusca = mysql_query("SELECT * FROM users WHERE id='$username' AND password='$password'");

if (mysql_num_rows($userBusca) == 1) {
    session_start(); //inicia sessao

      $_SESSION['id'] = $_POST['username'];
      $_SESSION['password'] = $password;

      header("Location:main.php");

} else {
  echo '<a href="javascript:history.go(-1)">Utilizador e/ou senha invalidos! (Clique aqui para voltar a pagina de login)</a>';
}

?>

验证用户是否已登录     

@session_start();
    if(isset($_SESSION['id'])) {

    } else { //user not logged in
    header("Location:ask_login.php");
    }
?>

1 个答案:

答案 0 :(得分:1)

对于cookie,您只需进行以下更改:

<?php
$conn_error = 'Could not connect.';
$mysql_db = 'grupo5';
if (!mysql_connect('localhost', 'vitorpnm', '') || !mysql_select_db($mysql_db)) {
    die($conn_error);
}

$username = $_POST['username'];
$password = $_POST['password'];

$userBusca = mysql_query("SELECT * FROM users WHERE id='$username' AND password='$password'");

if (mysql_num_rows($userBusca) == 1) {
    session_start(); //inicia sessao

    setcookie('id', $_POST['username']); //$_SESSION['id'] = $_POST['username'];
    setcookie('password', $_POST['password']); //$_SESSION['password'] = $password;

    header("Location:main.php");
} else {
    echo '<a href="javascript:history.go(-1)">Utilizador e/ou senha invalidos! (Clique aqui para voltar a pagina de login)</a>';
}
?>

检查用户是否已登录:

<?php

if (isset($_COOKIE['id'])) {

} else { //user not logged in
    header("Location:ask_login.php");
}
?>

但请记住:Cookie会保存在客户端PC上。因此用户可以观看cookie值。加密cookie数据是最好的,因此用户无法以纯文本格式查看值。

你可以用cookies做什么,你可以在这里阅读:PHP-Manual for set_cookie