За последние 24 часа нас посетил 19171 программист и 1646 роботов. Сейчас ищут 906 программистов ...

Помогите с методами _POST

Тема в разделе "Прочие вопросы по PHP", создана пользователем DieselFaka, 30 июн 2012.

  1. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    Скрипт откопал у автора, он и забыл наверное про них, вообщем скрипт отсылает не правильные данные в БД
    Думаю проблема в вычислениях POST запросов, ковырялся несколько дней по 2-3 часа уже и сам пытался как то его с 0 написать, прошу помощи у вас, может найдет ошибку.
    Config.php
    Код (Text):
    1.  
    2. <?php
    3. if( ! defined( 'HACK' ) ) {
    4.     die( "Hacking attempt!" );
    5. }
    6.     $faction = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // не трогать
    7.     $date = date('d-m-Y H:i:s'); //не трогать если не хотите сменить формат фиксирования времени в логах
    8.     $username = $member_id['name'];//не трогать
    9.     $dir_main = 'engine/modules/shop';//директория с данным скриптом
    10.     $admin1 = 'dobrik';//ник 1 админа
    11.     $admin2 = 'KaZaK';//ник 2 админа
    12.     $picdir = 'shop/pics/';
    13.     $db_host = localhost; //хост базы данных
    14.     $db_user = minecraft; // юзер базы данных
    15.     $db_pass = minecraft; // пароль базы данных
    16.     $db_base = minecraft; // база данных игры
    17.     $db_realmon = realmoney; // не трогать
    18. $link = mysql_connect($db_host, $db_user, $db_pass)or die('Не удалось соединиться: ' . mysql_error()); //не трогать
    19. ?>
    pokupka.php

    Код (Text):
    1.  
    2. <?php
    3. if( ! defined( 'HACK' ) ) {
    4.     die( "Hacking attempt!" );
    5. }
    6. include('config.php');
    7. $idtovara = $_POST['buy'];
    8. $koplate = $_POST['iprice'];
    9. $kolichestvo = $_POST['count']*$_POST['icount'];
    10. mysql_query("UPDATE realmoney SET cash=cash-$koplate WHERE name='$username'")or die(mysql_error());
    11. mysql_query("INSERT INTO goods (id, nickname, item_id, item_amount) VALUES (NULL, '$username', '$idtovara', '$kolichestvo')")or die(mysql_error());
    12.     $logtext = "$date : $username купил $nazvanie в количестве $kolichestvo";
    13.     $fp = fopen('shop.txt', 'a');
    14.     fwrite($fp, $logtext);
    15.     fwrite($fp, "\n");
    16.     fclose($fp);
    17. ?>
    index.php
    Код (Text):
    1.  
    2. <?php
    3. define( 'HACK', TRUE);
    4. error_reporting(0);
    5. include('config.php');
    6.     $link;
    7.     mysql_select_db($db_base);
    8.     mysql_query('set NAMES utf8');
    9. /////////////////////////действия кнопок и формулы/////////////////////////
    10. $deid = $_POST['del'];
    11. $addid = $_POST['item_id'];
    12. $nazvanie = $_POST['nazvanie'];
    13. if(isset($_POST['addgood']))
    14. {
    15.    if($_FILES["filename"]["size"] > 300*1*300)
    16.    {
    17.    echo '<br>';
    18.    echo "Размер файла превышает мегабайт или больше 300х300 пикселей.";
    19.    }elseif($_FILES['filename']['type'] != "image/png"){
    20.    echo '<br>';
    21.    echo "Файл должен быть в формате .png";}else  
    22.    {
    23.    // Проверяем загружен ли файл
    24.    if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
    25.    {
    26.      // Если файл загружен успешно, перемещаем его
    27.      // из временной директории в конечную
    28.      move_uploaded_file($_FILES["filename"]["tmp_name"], $picdir.$_POST['item_id'].".png");
    29.    } else {
    30.       echo("Ошибка загрузки файла");
    31.    }
    32.    }
    33. mysql_query("INSERT INTO donate_shop (id, name, item_id, stack, price) VALUES (NULL, '".$_POST['name']."', '$addid', '".$_POST['how']."', '".$_POST['price']."')")or die(mysql_error());
    34. $mes = "Товар ID $addid добавлен!";
    35. }
    36. $_POST['iprice'] = $_POST['iprice']*$_POST['count'];
    37. ///////////////////////// количество реальных денег ///////////////////////
    38.     $sql = mysql_query("SELECT cash FROM $db_realmon WHERE name='$username'");
    39.     $query = mysql_result($sql,0);
    40. ///////////////////////////////////////////////////////////////////////////
    41. if(isset($_POST['buy'])){
    42.     if($query < $_POST['iprice']){
    43.     $mes = "У вас недостаточно средств, пополните счет через личный кабинет.";}
    44.     else{
    45.     include('pokupka.php');
    46.     $mes = "Вы успешно купили $kolichestvo $nazvanie";
    47.     }
    48. }
    49.     $sql = mysql_query("SELECT cash FROM $db_realmon WHERE name='$username'");
    50.     $query = mysql_result($sql,0);
    51. if(isset($_POST['del']))
    52. {
    53. mysql_query("DELETE FROM donate_shop WHERE item_id='".$_POST['del']."'");
    54. $mes = "Товар ID $deid удален!";
    55. }
    56. echo "На донат счету у вас:\n";
    57. if ($query == ''){
    58. $query = 0;}
    59. echo "$query рублей.";
    60. echo '<br>';
    61. echo $mes;
    62. echo '<br>';
    63. print'<font color=red>Для получения покупки в игре введите команду </font><font color=green>/mygoods</font>';
    64. //////////////////////////////////////////////////////////////////////////////
    65. ////////////////////////вывод товаров////////////////////////////////////////
    66. $result2 = mysql_query("SELECT * FROM donate_shop");
    67.    
    68. print '<center>
    69. <table border="0" cellpadding="2" cellspacing="3">
    70. <tr align="center" bordercolor="red">
    71. <td width="100"><font color = "#0A6E0B"><strong>Товар</strong></font></td>
    72. <td width="50"><font color = "#0A6E0B"><strong>ID</strong></font></td>
    73. <td width="100"><font color = "#0A6E0B"><strong>Название</strong></font></td>
    74. <td width="100"><font color = "#0A6E0B"><strong>цена</strong></font></td>
    75. <td width="100"><font color = "#0A6E0B"><strong>кол-во</strong></font></td>
    76. <td width="100"><font color = "#0A6E0B"><strong>купить</strong></font></td>
    77. </tr>';
    78. while($shop = mysql_fetch_assoc($result2)) {
    79.     print '<tr align="center">
    80.             <td><strong><img src="'.$picdir.$shop["item_id"].'.png'.'"></strong></td>
    81.             <td><strong>' . $shop["item_id"] . '</strong></td>
    82.             <td><strong>' . $shop["name"] . '</strong></td>
    83.             <td><strong>' . $shop["price"] . '</strong></td>
    84.             <td><strong>' . $shop["stack"] . '</strong></td>
    85.             <td><strong>
    86. <form action=" '.$faction.'" method="post">
    87.    <p><SELECT NAME="count">
    88. <OPTION value = "1">x1
    89. <OPTION value = "2">x2
    90. <OPTION value = "3">x3
    91. <OPTION value = "4">x4
    92. </SELECT></p>
    93. <INPUT TYPE="HIDDEN" NAME="iprice" VALUE ="' . $shop["price"] . '">
    94. <INPUT TYPE="HIDDEN" NAME="nazvanie" VALUE ="' . $shop["name"] . '">
    95. <INPUT TYPE="HIDDEN" NAME="icount" VALUE ="' . $shop["stack"] . '">
    96.    <p><button value="'.$shop["item_id"].'" name="buy" type="submit">Купить</button></p>';
    97. if($username == dobrik || $username == KaZaK){
    98. print '<p><button value="'.$shop["item_id"].'" name="del" type="submit">Удалить</button></p>
    99.   </form></strong></td>
    100.         </tr>';
    101. }
    102. }
    103. print "</table></center>";
    104.  
    105.  
    106.  
    107. ?>
    108. <html>
    109. <body>
    110. <script language="Javascript">
    111. <!--alert ("Внимание! Для получения покупок вы должны находится в игре! Иначе деньги отнимутся ,а товар не прийдет!")
    112. //-->
    113. </script>
    114. <?php
    115. if($username == $admin1 || $username == $admin2){
    116. ?>
    117. Добавить товар<br><hr>
    118. <form action="<?php $faction ?>" method="post" enctype="multipart/form-data" name="addgoods">
    119. Название
    120. <input name="name" type="text" />
    121. ID товара
    122. <input name="item_id" type="text" size="5" />
    123. Цена
    124. <input name="price" type="text" size="4" maxlength="4" />
    125. за сколько шт
    126. <input name="how" type="text" size="4" maxlength="4" /><br>
    127. Картинка
    128. <input name="filename" type="file" />
    129. <input name="addgood" type="submit" value="Добавить" />
    130. </form>
    131. <?php
    132. }else{}
    133. mysql_free_result($sql);
    134.  
    135. mysql_close($link);
    136. ?>
    137. </body>
    138. </html>
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Проблема в чем?
     
  3. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    при покупке товара, в базу посылаются не верные данные
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Можно посмотреть какойнить запрос неправильный и правильный для сравнения?
     
  5. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    лог из мускла?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну ты просто покажи запрос неправильный в том виде в котором он уходит в базу.
    Ну и правильный запрос каким он должен быть.
     
  7. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    Вот этот правильный, который в pokupka.php, то есть нужно ориентироваться по нему
    Код (Text):
    1.  
    2. $idtovara = $_POST['buy'];
    3. $koplate = $_POST['iprice'];
    4. $kolichestvo = $_POST['count']*$_POST['icount'];
    5. mysql_query("UPDATE realmoney SET cash=cash-$koplate WHERE name='$username'")or die(mysql_error());
    6. mysql_query("INSERT INTO goods (id, nickname, item_id, item_amount) VALUES (NULL, '$username', '$idtovara', '$kolichestvo')"
    а сама ошибка где то в index.php, скорее всего в вычислении методов post
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    то что получается, а не код, можно увидеть?
     
  9. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    вот сделал 2 запроса, в результате получилось это
    [​IMG]
    в первом запросе item_amount должно быть 256
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Запросы сами можно увидеть? =)
    Ты их скрываешь чтоли?
     
  11. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вот ты говоришь "запрос неправильный, наверное что-то с пост"
    а запрос ты смотрел?
    Код (PHP):
    1. mysql_query("UPDATE realmoney SET cash=cash-$koplate WHERE name='$username'")or die(mysql_error());
    2. mysql_query("INSERT INTO goods (id, nickname, item_id, item_amount) VALUES (NULL, '$username', '$idtovara', '$kolichestvo')")or die(mysql_error()); 
    Тут у тебя два запроса. А в каком оно виде уходит в БД ты смотрел?

    сделай так, чтобы запрос тебе напечатался, и посмотри, что с ним не так
    Код (PHP):
    1. $query = "UPDATE realmoney SET cash=cash-$koplate WHERE name='$username'";
    2. echo 'ЗАПРОС: '.$query.'<br><br>';
    3. mysql_query($query)or die(mysql_error());
    4. $query = "INSERT INTO goods (id, nickname, item_id, item_amount) VALUES (NULL, '$username', '$idtovara', '$kolichestvo')";
    5. echo 'ЗАПРОС: '.$query.'<br><br>';
    6. mysql_query($query)or die(mysql_error()); 
     
  13. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    ничего не пишет, открывается пустая страница, в базе тоже пусто
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    даже слова ЗАПРОС не пишет?
     
  15. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда есть мнение, что этот код вообще не исполняется.
     
  17. DieselFaka

    DieselFaka Активный пользователь

    С нами с:
    26 фев 2012
    Сообщения:
    29
    Симпатии:
    0
    можно упростить скрипт, вырезать ненужное, чтоб было более понятно, где ошибка
    Код (PHP):
    1. <?php
    2. define( 'HACK', TRUE);
    3. include('config.php');
    4.     $link;
    5.     mysql_select_db($db_base);
    6.     mysql_query('set NAMES utf8');
    7. /////////////////////////действия кнопок и формулы/////////////////////////
    8. $nazvanie = $_POST['nazvanie'];
    9. $_POST['iprice'] = $_POST['iprice']*$_POST['count'];
    10. ///////////////////////// количество реальных денег ///////////////////////
    11.     $sql = mysql_query("SELECT cash FROM $db_realmon WHERE name='$username'");
    12.     $query = mysql_result($sql,0);
    13. ///////////////////////////////////////////////////////////////////////////
    14. if(isset($_POST['buy'])){
    15.     if($query < $_POST['iprice']){
    16.     $mes = "У вас недостаточно средств, пополните счет через личный кабинет.";}
    17.     else{
    18.     include('pokupka.php');
    19.     $mes = "Вы успешно купили $kolichestvo $nazvanie";
    20.     }
    21. }
    22.     $sql = mysql_query("SELECT cash FROM $db_realmon WHERE name='$username'");
    23.     $query = mysql_result($sql,0);
    24. echo "На донат счету у вас:\n";
    25. if ($query == ''){
    26. $query = 0;}
    27. echo "$query рублей.";
    28. echo '<br>';
    29. echo $mes;
    30. echo '<br>';
    31. print'<font color=red>Для получения покупки в игре введите команду </font><font color=green>/mygoods</font>';
    32. //////////////////////////////////////////////////////////////////////////////
    33. ////////////////////////вывод товаров////////////////////////////////////////
    34. $result2 = mysql_query("SELECT * FROM donate_shop");
    35.     
    36. print '<center>
    37. <table border="0" cellpadding="2" cellspacing="3">
    38. <tr align="center" bordercolor="red">
    39. <td width="100"><font color = "#0A6E0B"><strong>Товар</strong></font></td>
    40. <td width="50"><font color = "#0A6E0B"><strong>ID</strong></font></td>
    41. <td width="100"><font color = "#0A6E0B"><strong>Название</strong></font></td>
    42. <td width="100"><font color = "#0A6E0B"><strong>цена</strong></font></td>
    43. <td width="100"><font color = "#0A6E0B"><strong>кол-во</strong></font></td>
    44. </tr>';
    45. while($shop = mysql_fetch_assoc($result2)) {
    46.       print '<tr align="center">
    47.             <td><strong><img src="'.$picdir.$shop["item_id"].'.png'.'"></strong></td>
    48.             <td><strong>' . $shop["item_id"] . '</strong></td>
    49.             <td><strong>' . $shop["name"] . '</strong></td>
    50.             <td><strong>' . $shop["price"] . '</strong></td>
    51.             <td><strong>' . $shop["stack"] . '</strong></td>
    52.             <td><strong>
    53. <form action=" '.$faction.'" method="post">
    54. <INPUT TYPE="HIDDEN" NAME="iprice" VALUE ="' . $shop["price"] . '">
    55. <INPUT TYPE="HIDDEN" NAME="nazvanie" VALUE ="' . $shop["name"] . '">
    56. <INPUT TYPE="HIDDEN" NAME="icount" VALUE ="' . $shop["stack"] . '">
    57.    <p><button value="'.$shop["item_id"].'" name="buy" type="submit">Купить</button></p>';
    58. }
    59. print "</table></center>";
    60. ?>