Php 如何在注销后保存喜爱的图像,并在登录后仍能看到它们?
问题: 因此,当我登录时,用户可以转到browse.php将图像添加到favorites.php,照片将显示在该页面上 当我注销并重新登录时,图像将消失(未保存) 问题: 在我注销后如何保存它,以便下次登录时,我可以使用cookie或其他方法查看特定用户最喜爱的图像(因为不允许我使用数据库) 我的收藏夹页面Php 如何在注销后保存喜爱的图像,并在登录后仍能看到它们?,php,session,cookies,session-cookies,Php,Session,Cookies,Session Cookies,问题: 因此,当我登录时,用户可以转到browse.php将图像添加到favorites.php,照片将显示在该页面上 当我注销并重新登录时,图像将消失(未保存) 问题: 在我注销后如何保存它,以便下次登录时,我可以使用cookie或其他方法查看特定用户最喜爱的图像(因为不允许我使用数据库) 我的收藏夹页面 <?php session_start(); require_once 'favoritesfunction.php'; if (isset($_GET["fileName&
<?php
session_start();
require_once 'favoritesfunction.php';
if (isset($_GET["fileName"])) {
$fileName = $_GET["fileName"];
addToFavorites($fileName);
}
?>
<!DOCTYPE html>
<html>
<head>
<?php
$title = "Travel Photos - View Favorites";
?>
<link rel="stylesheet" href="viewfavorites.css" />
</head>
<body>
<main class="container">
<h1 class="favheader">Favorites</h1>
<div class="content">
<?php
if (isset($_SESSION['favorites']) && isset($_SESSION['email'])) {
$favorites = $_SESSION['favorites'];
if (count($favorites) > 0) {
?> <ul class="ul-favorite"> <?php
foreach ($favorites as $f) {
echo '<img class="displayPic" src="https://storage.googleapis.com/assignment1_web2/square150/' . $f . '">';
}
?>
</ul>
<p id="removeall"><button class="button"><span><a target="" href="services/removefavorites.php?remove=all">Remove All</a></span></button></p>
<?php
}
} else {
?>
<div class="nofavorites">
<p>No favorites found.</p>
</div>
<?php
}
?>
</div>
</main>
</body>
<script type="text/javascript" src="main.js"></script>
</html>
最爱
没有找到收藏夹
我的添加到收藏夹功能php
<?php
function addToFavorites($fileName)
{
//Checks if the session favorites exists
if (isset($_SESSION['favorites'])) {
$favorites = $_SESSION['favorites'];
} else {
$favorites = array();
$_SESSION['favorites'] = $favorites;
}
// add item to favourites
$item = $fileName;
$match = false;
//Loop below checks for duplicates
$i = 0;
while ($i < count($favorites)) {
if ($favorites[$i] == $item) {
$favorites[$i] = $item;
$match = true;
}
$i++;
}
//if match equals false, that means its not in the favorites list of the user
//so it is added to the user's favorites array
if ($match == false) {
$favorites[] = $item;
}
$_SESSION['favorites'] = $favorites;
$_SESSION['favorites'] = $favorites;
}
不应将$favorites
保存到会话中,而应将该信息写入持久数据存储。MySQL可能是最流行的,但是您可以使用任何可以处理持久存储的东西。当用户注销时,php通过删除会话cookie文件及其所有数据来完成此操作。因此,当您的用户将图像添加到收藏夹时,请将这些数组元素中的每一个都放在一个表中,该表的用户id带有一个外键。然后,当用户登录时,基于相同的用户id读回该信息。使用cookie或JScookie@AlexBarker是的,我知道这将是最简单的,但我的教授说我不能使用数据库来存储,必须使用Cookies,请遵循@Diegoponiano提供的示例。您需要使用浏览器cookie,而不是服务器端“会话”cookie。我知道,一开始有点困惑。不,不。你用$\u COOKIE而不是$\u SESSION。Cookie通过web浏览器存储在计算机上,会话存储在服务器上。会话还使用浏览器中的cookie来标识存储在服务器上的信息。总之,$\u COOKIE将向bowser写入数据,$\u会话将向服务器写入数据。注销将销毁服务器端数据,但不会销毁客户端$\u COOKIE。您应该将该信息写入持久数据存储,而不是将$favorites
保存到会话中。MySQL可能是最流行的,但是您可以使用任何可以处理持久存储的东西。当用户注销时,php通过删除会话cookie文件及其所有数据来完成此操作。因此,当您的用户将图像添加到收藏夹时,请将这些数组元素中的每一个都放在一个表中,该表的用户id带有一个外键。然后,当用户登录时,基于相同的用户id读回该信息。使用cookie或JScookie@AlexBarker是的,我知道这将是最简单的,但我的教授说我不能使用数据库来存储,必须使用Cookies,请遵循@Diegoponiano提供的示例。您需要使用浏览器cookie,而不是服务器端“会话”cookie。我知道,一开始有点困惑。不,不。你用$\u COOKIE而不是$\u SESSION。Cookie通过web浏览器存储在计算机上,会话存储在服务器上。会话还使用浏览器中的cookie来标识存储在服务器上的信息。总之,$\u COOKIE将向bowser写入数据,$\u会话将向服务器写入数据。注销将销毁服务器端数据,但不会销毁客户端$\u COOKIE。