簡體   English   中英

購物車與PHP和SQL

[英]Shopping cart with PHP and SQL

我有各種數量的文件和數據庫表,包括artistalbumtracks

在網頁上,用戶可以選擇藝術家,專輯,然后選擇要購買的歌曲或專輯。

所需的功能是:當用戶選擇購買專輯時,所有曲目都被添加到購物車。

這是一個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>

我還有其他帶有數據庫查詢等的文件。

有一個可以通過信件獲得藝術家,另一個可以獲得藝術家的專輯。 然后,購物,展示籃子,顯示購買,添加到籃子和結帳文件。

非常感謝任何有關此問題的幫助。

來自getTracksByAlbum.php的其他代碼

?php
include ("dbConnect.php");
$albumID=$_GET["id"];
$dbQuery="select id,title from tracks where albumID='$albumID' order by trackNumber     
asc";
$dbResult=mysql_query($dbQuery);
echo $albumID."\n";
echo mysql_num_rows($dbResult)."\n";
while ($dbRow=mysql_fetch_array($dbResult)) {
  echo $dbRow["id"]."_".$dbRow["title"]."\n";
}  
?>

來自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 {

 ?>

我不確定需要什么其他信息,我不完全理解,而且有很多。 我原來是用這個 -

$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']
  }

嘗試解決它 - 但我真的迷失了:(

根據您的最后一段代碼,您需要在shofForTracks.php執行類似於以下代碼的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);

注意 :

  • 必須正確轉義用戶發送的數據。 永遠不要相信用戶輸入(例如$_POST$_GET ,...)。 您現有的代碼容易受到SQL注入攻擊。
  • 您使用已棄用的 mysql_*函數。 切換到mysqli或PDO。 看到這個那個那個
  • 上面的代碼不是原樣的安全 使用簡單的HTTP GET請求將內容添加到購物車可能會導致安全漏洞,例如XSS
  • 對不起,但從您的代碼看起來,您似乎並不准備自己編寫一個真實的(意味着真錢)購物網站(但無論如何)。 您仍然需要了解很多關於網絡交易必不可少的安全性。 為了您自己,如果您對代碼的安全性沒有絕對的信心,請不要讓人們用他們的錢來信任您。 但是,嘿,我只是說。 如果你把這些東西編成一個練習,那么就有機會熟悉這些概念:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM