Witam,
bardzo prosze pomoc bo nie mam juz sily. Tworze koszyk z zakupami. Z bazy danych pobierana jest dostepna ilosc sztuk danego produktu. Jak zmusi formularz input aby nie pozwolil nam wprowadzic wieksze wartosci niz liczba sztuk danego produktu. Caly koszyk oparty jest o sesje i probowalem juz chyba wszystkie rozwiazania zeby zmusic to do dzialania. Niestety zawsze po wpisaniu wiekszej wartosci niz liczba dostepnych sztuk wartosc ta powiedzmy 1987 zapisuje mi sie do zmiennej sesyjnej $_SESSION['cart'][numer_produktu]. Poniewaz chce to pozniej umiescic w bazie za pomoca serialize nie moge sobie pozwolic aby ta wartosc wkradla sie sie do bazy...

Podrzucam ponizej skrypt bardzo prosze o pomoc:

  1. <?php
  2. $page_title = 'Koszyk zakupów';
  3. include_once ('includes/naglowek.html');
  4.  
  5. if (isset($_POST['submit'])) {
  6. foreach ($_POST['qty'] as $key => $value) {
  7. if ((is_numeric($value) AND ($value == 0))) {
  8. unset ($_SESSION['cart'][$key]);
  9. } elseif (is_numeric($value) AND ($value > 0)) {
  10. $_SESSION['cart'][$key] = $value;
  11. }
  12. }
  13. }
  14.  
  15. if (isset($_POST['clear'])) {
  16. foreach ($_POST['qty'] as $key => $value) {
  17. unset ($_SESSION['cart'][$key]);
  18. }
  19. }
  20.  
  21. $empty = true;
  22. if (isset($_SESSION['cart'])) {
  23. foreach ($_SESSION['cart'] as $key => $value) {
  24. if (isset($value)) {
  25. $empty = false;
  26. }
  27. }
  28. }
  29.  
  30. if (!$empty) {
  31. require_once ('../mysql_connect.php');
  32.  
  33. $query = "SELECT detail_id, title, shop_price, shop_qty FROM detail_movies WHERE
  34. shop = 'Y' AND shop_qty > '0' AND detail_id IN (";
  35. foreach ($_SESSION['cart'] as $key => $value) {
  36. $query .= $key . ',';
  37. }
  38. $query = substr($query, 0, -1) . ') ORDER BY title ASC';
  39. $result = @mysql_query($query);
  40.  
  41. echo '<br /><h2>Koszyk zakupów</h2>';
  42. echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">";
  43. echo '
  44. <table style="margin: 0 auto; border-spacing: 3px; border-collapse: spacing; width:90%;">
  45. <tr>
  46. <td style="text-align: left; padding: 1px; width: 10%;">
  47. <b>ID:</b>
  48. </td>
  49. <td style="text-align: center; padding: 1px; width: 35%;">
  50. <b>Tytuł filmu:</b>
  51. </td>
  52. <td style="text-align: center; padding: 1px; width: 10%;">
  53. <b>Sztuk:</b>
  54. </td>
  55. <td style="text-align: center; padding: 1px; width: 17%;">
  56. <b>Cena:</b>
  57. </td>
  58. <td style="text-align: center; padding: 1px; width: 10%;">
  59. <b>Ilość:</b>
  60. </td>
  61. <td style="text-align: right; padding: 1px; width: 18%;">
  62. <b>Razem:</b>
  63. </td>
  64. </tr>
  65. ';
  66.  
  67. $total = 0;
  68. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  69. if ($_SESSION['cart'][$row['detail_id']] > $row['shop_qty']) {
  70. $subtotal = 0;
  71. } else {
  72. $subtotal = $_SESSION['cart'][$row['detail_id']] * $row['shop_price'];
  73. }
  74.  
  75. $total += $subtotal;
  76.  
  77. echo "
  78. <tr>
  79. <td style=\"text-align: left; padding: 2px; width: 10%;\">{$row['detail_id']}
  80. </td>
  81. <td style=\"text-align: center; padding: 2px; width: 35%;\">{$row['title']}
  82. </td>
  83. <td style=\"text-align: center; padding: 2px; width: 10%;\">{$row['shop_qty']}
  84. </td>
  85. <td style=\"text-align: center; padding: 2px; width: 17%;\">{$row['shop_price']} zł
  86. </td>
  87. ";
  88. if ($_SESSION['cart'][$row['detail_id']] > $row['shop_qty']) {
  89. echo "
  90. <td style=\"text-align: center; padding: 2px; width: 10%;\">
  91. <input type=\"text\" size=\"1\" name=\"qty[{$row['detail_id']}]\" value=\"{$row['shop_qty']}\" />
  92. </td>
  93. ";
  94. } else {
  95. echo "
  96. <td style=\"text-align: center; padding: 2px; width: 10%;\">
  97. <input type=\"text\" size=\"1\" name=\"qty[{$row['detail_id']}]\" value=\"{$_SESSION['cart'][$row['detail_id']]}\" />
  98. </td>
  99. ";
  100. }
  101. echo "
  102. <td style=\"text-align: right; padding: 2px; width: 18%;\">" . number_format($subtotal, 2) . " zł
  103. </td>
  104. </tr>\n
  105. ";
  106. }
  107.  
  108. echo '
  109. <tr>
  110. <td colspan="5" style="text-align: right; font-weight: bold;">
  111. Suma:
  112. </td>
  113. <td style="text-align: right; font-weight: bold;">' . number_format($total, 2) .' zł
  114. </td>
  115. </tr>
  116. </table>
  117. <div style="text-align: center;">
  118. <br />
  119. <input type="submit" name="submit" value="Uaktualnij zawartość" />
  120. <p>
  121. <input type="submit" name="clear" value="Wyczyść" /></p>
  122. </div>
  123. </form>
  124. <div style="text-align: center;">
  125. <b>Pamiętaj!</b> Przed złożeniem zamówienia zapoznaj sie z <a href="#">Regulaminem</a>.<br />
  126. Wszystkie ceny podane w sklepie są cenami brutto (z vat).<br />
  127. ';
  128. if (isset($_SESSION['user_id'])) {
  129. echo '<br /><a style="font-size: 130%;" href="zamowienie.php">Realizacja zamówienia!</a>';
  130. } else {
  131. echo '<br /><a style="font-size: 130%;" href="logowanie.php">Zaloguj się aby złożyć zamówienie!</a>';
  132. }
  133. echo '</div>';
  134.  
  135. } else {
  136. echo '<br /><h2>Koszyk zakupów</h2>';
  137. echo 'Twój koszyk zakupów jest aktualnie pusty.';
  138. }
  139. include ('includes/stopka.html');
  140. ?>


Chodzi mi tutaj o jakies zabezpieczenie na poziomie formularza input name=qty[id]