gpt4 book ai didi

php - 如何存储用户的 session 数据

转载 作者:行者123 更新时间:2023-11-30 22:50:32 26 4
gpt4 key购买 nike

网站的第一个问题(我是这个网站的新手)想发布我最困难的问题.....

成功登录后,我的网站上有登录系统 我的 protected 页面仅在登录后显示 我想添加 $_SESSION['point'] 来存储用户点。并将其保存到数据库和点将增加,如果用户点击链接。我想将这个增加的点存储到我的 userdb.php 中。我保存所有注册信息的地方。(我没有使用 MySql 作为注册表单我使用了 userdb.php 文件)我的 protected 页面 php 代码是

<?php
if (session_id() == "")
{
session_start();
}
if (!isset($_SESSION['username']))
{
header('Location: #');
exit;
}
if (isset($_SESSION['expires_by']))
{
$expires_by = intval($_SESSION['expires_by']);
if (time() < $expires_by)
{
$_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
}
else
{
unset($_SESSION['username']);
unset($_SESSION['expires_by']);
unset($_SESSION['expires_timeout']);
header('Location: #');
exit;
}
}
if (session_id() == "")
{
session_start();
}
if (session_id() == "")
{
session_start();
}
?>

我的 display.php 显示 url

<?php

mysql_connect('Server', 'user', 'passs');
mysql_select_db('add');
$query =mysql_query('select * from addimage');

while( $row = mysql_fetch_assoc($query) )
{

echo '
<div style="min-width:300px;height:100px;border:red 5px;float:left;">'.$row['url']. '</div>';
}

?>

最佳答案

您可以像这样编写您的登录 PHP,

<?php
// if PHP > 5.4: if (PHP_SESSION_NONE == session_status()) {
if ('' == session_id()) {
session_start();
}
if (isset($_SESSION['expires_by'])) {
$expires_by = intval($_SESSION['expires_by']);
if (time() < $expires_by) {
$_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
} else {
session_destroy();
}
}
if (!isset($_SESSION['username'])) {
Header('Location: ' . $_SERVER['REQUEST_URI']);
exit();
}
?>

然后单击 URL,您或许可以使用 jQuery 和 AJAX。你应该在你的 CSS 中声明一个像“link-block”这样的类,然后这样写 URL

echo '<div class="link-block">'.$row['url'].'</div>';

并在包含 jQuery 脚本后,向页面的 onReady Javascript 中的那些 DIV 添加点击处理程序:

$('.link-block').on('click', function(e) {
$.post('/increase-points.php', { }, function(retval){
if (retval.newpoints) {
$('#point-block').html(retval.newpoints);
}
});
});

增加点处理程序需要打开 session ,这与上面的代码相同(因此您可以将其放入外部包含“session.php”),并打开数据库连接(另一个包含.. .),然后:

UPDATE usertable SET points = points + 1 WHERE user_id = {$_SESSION['user_id']};

或者如果您只有一个用户名(确保它被正确转义)

...WHERE username = '{$escapedSessionUsername}';

顺便说一下,我需要添加 standard mysql_* deprecation disclaimer .

之后,您可以将要显示的当前点返回到 ID 为“points-block”的 DIV 中:

    You have <span id="points-block"></span> points.

通过在从数据库中查询它们之后以 JSON 格式返回它(或者您可以将它们保留在 session 中并同时更新数据库和 session ;它为您节省了一个查询)

    // This in /update-points.php
$retval = array('newpoints' => $updated_points);
Header('Content-Type: application/json;charset=utf8');
die(json_encode($retval));

您也可以通过其他方式做到这一点,但我在您的链接 div 中没有看到 anchor ,所以我猜您想要一些动态的东西,这主要是指 AJAX。

关于php - 如何存储用户的 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com