首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Cookies,
EN

Stack Overflow用户
提问于 2014-07-01 12:54:54
回答 1查看 68关注 0票数 0

我需要一些帮助扣留用户会话,以防我的网络服务器失败。我配置了一个HAProxy,可以将用户请求扩展到我的2台user服务器。

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

我的问题是,当WebServer 1失败并将其发送到WebServer 2时,我无法保存用户会话。所以我的朋友建议我在PHP中使用cookies。我不熟悉PHP中的cookie,但它与会话非常相似。

下面是登录用户的代码:login.php

代码语言:javascript
运行
复制
  $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>';
}

?>

验证用户是否已登录或未登录

代码语言:javascript
运行
复制
@session_start();
    if(isset($_SESSION['id'])) {

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-01 13:01:25

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

代码语言:javascript
运行
复制
<?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>';
}
?>

检查用户是否已登录:

代码语言:javascript
运行
复制
<?php

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

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

但请记住:Cookie是在客户端pc上本地保存的。这样用户就可以查看cookie值。这将是最好的加密cookie数据,这样用户就不能看到纯文本中的值。

您也可以在这里阅读:饼干

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24510856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档