使用PHP和SQL的购物车
我有不同数量的文件和数据库表,包括使用PHP和SQL的购物车,php,mysql,sql,cart,Php,Mysql,Sql,Cart,我有不同数量的文件和数据库表,包括artist、album和曲目 在该网页上,用户可以选择艺术家、专辑,然后选择要购买的歌曲或专辑 所需的功能是:当用户选择购买相册时,所有曲目都会添加到购物车中 下面是一个PHP代码块,带有购买相册的链接: <p>?php session_start(); <br> $albumID=$_POST["albumID"]; <br> echo "<p>Going to buy album $
artist
、album
和曲目
在该网页上,用户可以选择艺术家、专辑,然后选择要购买的歌曲或专辑
所需的功能是:当用户选择购买相册时,所有曲目都会添加到购物车中
下面是一个PHP代码块,带有购买相册的链接:
<p>?php
session_start(); <br>
$albumID=$_POST["albumID"]; <br>
echo "<p>Going to buy album $albumID</p>";
echo "<p><a href=\"shopForTracks.php\">Click here to continue</a></p>";
?></p>
showBasket.php中的附加代码
<?php
if (isset($_SESSION["currentUserID"])) {
$dbQuery="select * from basket where paid='N' and userID=".$_SESSION["currentUserID"];
$dbResult=mysql_query($dbQuery);
$numTracks=mysql_num_rows($dbResult);
}
?>
<a href="login.php">Logout <?php echo $_SESSION["currentUser"]; ?></a> |
<a href="shopForTracks.php">Shop for tracks</a> |
<a href="showBasket.php">Show Basket</a> <?php echo "($numTracks)"; ?> |
<a href="checkout.php">Checkout</a> |
<a href="showMyPurchases.php">Show my purchases</a>
<hr>
<?php
$dbQuery="select tracks.title, albums.title, artists.name, basket.id ".
"from basket,tracks,albums,artists ".
"where basket.userID=".$_SESSION["currentUserID"]." ".
"and basket.paid='N' ".
"and basket.trackID=tracks.id ".
"and albums.id=tracks.albumID ".
"and artists.id=tracks.artistID";
$dbResult=mysql_query($dbQuery);
$numTracks=mysql_num_rows($dbResult);
if ($numTracks==0)
echo "<h3>Your basket is empty</h3>";
else {
?>
为了尝试解决这个问题,我真的迷路了:(根据您的最后一段代码,您需要在
shofForTracks.php中执行类似于以下代码的操作
// We get the album to add via the `albumID` GET parameter
$query = mysql_query("SELECT song_id FROM song WHERE album = '".mysql_real_escape_string($_GET['albumID'])."'")
// We add a line to the cart per track of the album. We construct the query by pieces
$insert = "INSERT INTO basket (userID, paid, trackID) VALUES ";
$template = "(" . mysql_real_escape_string($_SESSION['currentUserID']) . ", 'N', %d)";
// Add a value line for each track in the array `$tracks`
$tracks = array()
while($track = mysql_fetch_array($query)
$tracks[] = sprintf($template, $track['song_id']);
// Add the lines to the insert query
// "INSERT INTO ... VALUES (ID, 'N', 1), (ID, 'N', 3)"
$insert .= implode(", ", $tracks);
mysql_query($insert);
请注意:
- 必须正确转义从用户发送的数据。切勿信任用户输入(例如,
$\u POST
,$\u GET
,…)。现有代码易受攻击
- 您可以使用不推荐使用的
mysql.*
函数。请切换到mysqli
或PDO。请参阅和
- 上述代码不安全。使用简单的HTTP
GET
请求将内容添加到购物车可能会导致安全漏洞,如
- 很抱歉,但是从代码的外观来看,您似乎还没有准备好自己编写一个现实生活(意味着真正的金钱)购物网站(无论如何).关于安全性,你还有很多需要学习的地方,这对网络交易至关重要。为了你自己的利益,如果你对代码的安全性没有绝对的信心,就不要让人们相信你的钱。但是,嘿,我只是说。如果你把这些东西作为练习来编码,那么你就有机会熟悉这些概念临时秘书处:)
我们需要更多的信息才能有效地提供帮助。特别是,我们需要知道购物车如何存储物品以及如何将物品添加到购物车中。请发布与此相关的代码。非常感谢!是的,这是一项任务的一部分,只需要很少的指导。
$query = mysql_query("SELECT song_id FROM song WHERE album = '".$_POST['albumID']."'")
$_SESSION['ID] = array();
while($album = mysql_fetch_array($query)
{
$_SESSION['basket'][] = $albums['Track_id']
}
// We get the album to add via the `albumID` GET parameter
$query = mysql_query("SELECT song_id FROM song WHERE album = '".mysql_real_escape_string($_GET['albumID'])."'")
// We add a line to the cart per track of the album. We construct the query by pieces
$insert = "INSERT INTO basket (userID, paid, trackID) VALUES ";
$template = "(" . mysql_real_escape_string($_SESSION['currentUserID']) . ", 'N', %d)";
// Add a value line for each track in the array `$tracks`
$tracks = array()
while($track = mysql_fetch_array($query)
$tracks[] = sprintf($template, $track['song_id']);
// Add the lines to the insert query
// "INSERT INTO ... VALUES (ID, 'N', 1), (ID, 'N', 3)"
$insert .= implode(", ", $tracks);
mysql_query($insert);