Автор Тема: Скрипт магазина  (Прочитано 73 раз)

0 Пользователей и 1 Гость просматривают эту тему.

vissaviАвтор темы

  • *
  • Оффлайн
  • Дата регистрации: Июнь 2019
  • Сообщений: 3
  • Страна: ua
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Скрипт магазина
« : 27 Июня 2019, 21:55:33 »
Здравствуйте. Есть скрипт магазина для ФФ но там серьезная дыра. Если пользователь создаст товар и купите его у себя, то стоимость товара зачислится ему же на баланс.
Вопрос к знатокам, как закрыть? При создании товара в базе данных отсутствует запись о продавце. Следовательно я создаю в строчке с товаром новый столбец, пусть будет "id_us".
Какие команды необходимо вписать в файле создания товара, чтобы в таблицу мускула в столбец id_us занесся id пользователя. Файл ниже:
<?PHP header("Content-Type: text/html; charset=windows-1251");?>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<html>
<head>


</div>


<div class="cl-right">
<div class="s-bk-lf">
<div class="acc-title">Добавить товар</div><br>
</div>
<div class="silver-bk"><div class="clr"></div>
<center>
Прежде чем добавить свой товар на продажу, убедитесь, что нет такого товара в списке магазина!
<hr>
</center>

<form action="/?menu=manager&sel=mag_get_tavar" method="post" enctype="multipart/form-data">
<p>Название товара</p>
<p><input type='text' name='nametovar' size='60' /></p>
<p>Цена товара (RUB)</p>
<p><input type='text' name='price' size='40' /></p>
<p>Категория товара</p>
<p><select name="cat">
   <option selected disabled>Выберите категорию товара</option>
<?php
   $db->Query("SELECT * FROM `db_mag_cat` ORDER BY `id` ASC ");
    while ( $rows = $db->FetchArray() ){
       echo "<option value='".$rows['id']."'>".$rows['name_cat']."</option>";
    }
?>
</select>

</p>
<p>Описание товара</p>
<p><textarea rows="15" cols="55" name="description"></textarea></p> <br /><br />

<p>Выберите фото (JPG, jpg, jpeg, JPEG, gif, GIF, png, PNG) <br>Название картинки должно быть по АНГЛИЙСКИ!!!</p>
<p><input type="FILE" name="imgupload"></p>

<p>Выберите товар (RAR, ZIP, TXT)  <br>Название файла должно быть по АНГЛИЙСКИ!!!</p>
<!-- Поле файла и кнопка Обзор -->
<p><input type='file' name='FILE' size='15' /></p> <br /><br />


<input type=submit name="submit" id="submit" value="Загрузить">
</form>


<?php

//echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';
//echo 'Полный путь к скрипту и его имя: '.$_SERVER['SCRIPT_FILENAME'].'<br>';
//echo 'Имя скрипта: '.$_SERVER['SCRIPT_NAME'];

$_OPTIMIZATION["title"] = "Добавить товар";
$usid = $_SESSION["user_id"];
$usname = $_SESSION["user"];

$submit=$_POST["submit"];
if(isset($submit))
{
   # === Грузим архив на сервер === #

   //$uploadfile = "uploads/".$_FILES['FILE']['name'];
   $now_date = time();
   $namefile = $now_date.$_FILES['FILE']['name'];
   $uploadfile = "uploads/".$namefile;
     $zagruzil = move_uploaded_file($_FILES['FILE']['tmp_name'], $uploadfile);

   // Копируем файл из каталога для временного хранения файлов:
   if (isset($zagruzil))
   {
      echo "<h3 style='color:green'>Файл успешно загружен на сервер</h3>";
   }
   else { echo "<h3 style='color:red'>Ошибка! Не удалось загрузить файл на сервер!</h3>"; }
     # === Грузим архив на сервер === #

   //заносим введенное пользователем описание в переменную $imgupload, если оно пустое, то уничтожаем переменную
   if (isset($_POST['description']))
   {
   $description = $_POST['description'];
   if ($description == '')
   {
    unset($description);}
    }
    if (empty($_FILES['imgupload']['name']))
   {
   //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
   //$avatar = "avatars/net-avatara.jpg";
   $avatar = "nophoto.png";
   //можете нарисовать net-avatara.jpg
   }
   else
   {
   //иначе - загружаем изображение пользователя
   $path_directory = $_SERVER["DOCUMENT_ROOT"].'/uploads/';
   //папка, куда будет загружаться начальная картинка и ее сжатая копия


   if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['imgupload']['name']))
   //проверка формата исходного изображения
       {

         $filename = $_FILES['imgupload']['name'];
         $source = $_FILES['imgupload']['tmp_name'];
         $target = $path_directory . $filename;
         move_uploaded_file($source, $target);
           //загрузка оригинала в папку $path_directory

      if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
      $im = imagecreatefromgif($path_directory.$filename) ;
       //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }
      if(preg_match('/[.](PNG)|(png)$/', $filename)) {
      $im = imagecreatefrompng($path_directory.$filename) ;
       //если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }
      if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
       $im = imagecreatefromjpeg($path_directory.$filename);
       //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }

   $date=time();
   $avatar = $date.".jpg";

      //$w = 400;  // мы получим  пропорциональное изображение шириной 400px
      $q = 100;  // качество jpeg по умолчанию

       $src = $im;
      // функция imagecreatefromjpeg создает изображение JPEG из файла
       // т.е. создаём исходное изображение на основе исходного файла и определяем его размеры

      $w_src = imagesx($src);
       $h_src= imagesy($src);
      // получение ширины и высоты изображения в пикселях

      //$ratio = $w_src/$w;
       //$w_dest = round($w_src/$ratio);
       //$h_dest = round($h_src/$ratio);

       $w_dest = $w_src;
       $h_dest = $h_src;
      // получение координат для построения нового изображения необходимой нам ширины

      $dest = imagecreatetruecolor($w_dest,$h_dest);
      // функция  imagecreatetruecolor пустое полноцветное изображение размерами x_size и y_size.
       // Созданное изображение имеет черный фон.

      imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
      // Функция imagecopyresized копирует прямоугольные области с одного изображения на другое

      // вывод картинки и очистка памяти
       //imagejpeg($dest,$avatar,$q);
       imagejpeg($dest, $path_directory.$date.".jpg" ,$q);
       imagedestroy($dest);
       imagedestroy($src);


   //вычисляем время в настоящий момент.
   //imagejpeg($dest, $path_directory.$date.".jpg");
   //сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
   //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
   //$avatar = $path_directory.$date.".jpg";

   //*******************Можно не использовать, если нет необходимости сжимать***************
   //заносим в переменную путь до аватара.
   $delfull = $path_directory.$filename;
   unlink ($delfull);
   //удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
   //*******************Можно не использовать, если нет необходимости сжимать***************
   }
   else
   {
   //в случае несоответствия формата, выдаем соответствующее сообщение

   exit ("Фото/картинка должно/а быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев

   }
   //конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
  }

   if (@copy($_FILES['imgupload']['tmp_name'], $path_directory . $_FILES['imgupload']['name'])){
      echo "<h3 style='color:red'>Ошибка! Не удалось загрузить ФОТО на сервер!</h3>";
    }
   else { echo "<h3 style='color:green'>ФОТО успешно загружено на сервер</h3>"; }

   $date_add = time();
   $name = $_POST['nametovar'];
   $price = $_POST['price'];
   $cat = $_POST['cat'];
   $db->Query("INSERT INTO `db_mag` (date_add, img, description, name, namefile, price, id_cat)
                     VALUES('$date_add','$avatar','$description','$name', '$namefile', '$price', '$cat' )");

   $tovar_id = $db->LastInsert();

   $db->Query("INSERT INTO `db_mag_users` (user, user_id, tovar_id)
                     VALUES('$usname','$usid','$tovar_id' )");
}


?>

</center>
</BR>
</div>
</div>

<div class="clr"></div>
</div>
                  
            <div class="footer">
               <center>
               
               <div class="clr-line"></div>
      
               </center>
            
            </div>
            
               </div>
         
</div>
   </body>
</html>

И как написать сравнение в файле покупки товара, чтобы продавцу с id равному id_us невозможно была покупка. Файл покупки ниже:
<?PHP header("Content-Type: text/html; charset=windows-1251");?>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

</div>

<?PHP
$_OPTIMIZATION["title"] = "Магазин";
$_OPTIMIZATION["description"] = "Магазин";
$_OPTIMIZATION["keywords"] = "Магазин";
?>
<div class="cl-right">
<div class="s-bk-lf">
   <div class="acc-title">Магазин</div>
</div>
<div class="silver-bk"><div class="clr">

<?php
   $userid = $_SESSION["user_id"];
   $username = $_SESSION["user"];
   $data = time();

$db->Query("SELECT * FROM `db_config` WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();

$db->Query("SELECT * FROM `db_users_a` WHERE id = '$userid' AND user = '$username' LIMIT 1");
$user_array = $db->FetchArray();

$db->Query("SELECT * FROM db_users_b WHERE id = '$userid' LIMIT 1");
$user_data = $db->FetchArray();

$db->Query("SELECT * FROM `db_mag_cat` ");
$cat_site = $db->FetchArray();

 if(isset($_GET["show"])){
   $idShow = $_GET['show'];
   echo $idShow;
    $db->Query("SELECT * FROM `db_mag` WHERE id=".$idShow);
    $show = $db->FetchArray();
    $serebro = $show['price'] * $sonfig_site["ser_per_wmr"];
    $link = "http://".$_SERVER['SERVER_NAME']."/uploads/".$show["namefile"]."";

    if ($idShow == $show['id']) { // Проверка на существование товара в магазине

      $mass = "<br /><center>Поздравляем с приобретением <b>".$show["name"]."</b>!<br />
      С Вашего счета было списано ".$serebro." серебра.<br /><br />
      Скачать архив можно по сылке: <a target='_blank' href='".$link."'>".$link."</a><br />
      или нажав <a target='_blank' href='".$link."'> =>>> СЮДА</a><br /><br />
      Спасибо!</center>";

      # Блокировка сессии
      if(!isset($_SESSION["user_id"])){
          //Header("Location: /");
          echo "<center><H2 style='color:red'>Авторизуйтесь, пожалуйста! <a href='/magazin'>Назад</a></H2></center>";
          //return;
      }
      else
      {
         # Проверяем баланс пользовтеля
         if($serebro <= $user_data["money_b"]){
            # Проверяем на существующие заявки
            $db->Query("SELECT COUNT(*) FROM `db_mag_orders` WHERE user_name = '$username' AND user_id = '$userid' AND tovar_id = '$idShow' ");
            if($db->FetchRow() == 0){
            //echo "No";

               # ==== ОПЛАТА ПОЛЬЗОВАТЕЛЮ ==== #
               # Проверяем на существующие заявки
               $db->Query("SELECT COUNT(*) FROM `db_mag_users` WHERE tovar_id = '$idShow' ");
               if($db->FetchRow() == 0){
                  //echo "Нет товара! Пользователь НЕ продает!";
                  # СРЕДСТВА ИДУТ АДМИНУ, т.к. выложил товар АДМИН. #

                  # Заносим в db_mag_orders покупку
                  $db->Query("INSERT INTO `db_mag_orders` (user_name, user_id, tovar_id, date_add, sum)
                              VALUES ('$username','$userid','$idShow','$data', '".$show['price']."') ");

                  # Снимаем с пользователя
                  $db->Query("UPDATE `db_users_b` SET money_b = money_b - '$serebro' WHERE id = '$userid'");

                  # Отправляем на почту
                  $sender = new isender;
                  $sender -> SendMagazin($username, $user_array["email"], $link);

                      # Выводим сообщение
                  echo $mass;

               } else {
                  //echo "Есть такой товар. Пользователь продает!";
                  # СРЕДСТВА ИДУТ ПОЛЬЗОВАТЕЛЮ, т.к. выложил товар ПОЛЬЗОВАТЕЛЬ. #

                  # Заносим в db_mag_orders покупку
                  $db->Query("INSERT INTO `db_mag_orders` (user_name, user_id, tovar_id, date_add, sum)
                              VALUES ('$username','$userid','$idShow','$data', '".$show['price']."') ");

                  # Добавляем на баланс пользователю
                  $db->Query("SELECT * FROM `db_mag_users` WHERE tovar_id = ".$idShow);
                   $showRow = $db->FetchArray();
                   $idUserTov = $showRow['user_id'];

                  $db->Query("UPDATE `db_users_b` SET money_b = money_b + '$serebro' WHERE id = '$idUserTov'");

                  # Добавляем статистику пользователю
                  $db->Query("UPDATE `db_mag_users` SET sumtov = sumtov + '$serebro' WHERE user_id = '$idUserTov' AND tovar_id = '$idShow' ");

                  # Отправляем на почту
                  $sender = new isender;
                  $sender -> SendMagazin($username, $user_array["email"], $link);

                      # Выводим сообщение
                  echo $mass;
               }

               # ==== /ОПЛАТА ПОЛЬЗОВАТЕЛЮ ==== #
            }
            else
            {
               echo "<center><H2 style='color:red'>Вы уже покупали данный товар! <a href='/magazin'>Назад</a></H2>
                     Скачать архив можно по сылке: <a target='_blank' href='".$link."'>".$link."</a><br />
                     или нажав <a target='_blank' href='".$link."'> =>>> СЮДА</a><br /><br /></center>";
            }

           }else echo "<center><H2 style='color:red'>Недостаточно средств! <a href='/magazin'>Назад</a></H2></center>";

      }

   } else echo "<center><H2 style='color:red'>Такого товара НЕТ! <a href='/magazin'>Назад</a></H2></center>";

 }
 else
 {
 #start //echo "no show";

   if(isset($_GET["buy"])){
      $idTovar = $_GET['buy'];

      $db->Query("SELECT COUNT(*) FROM `db_mag` WHERE id = '$idTovar' ");
      if($db->FetchRow() == 0){ // Проверка на существование товара в магазине
         echo "<center><H2 style='color:red'>Такой товар купить нельзя! <a href='/magazin'>Назад</a></H2></center>";
      }
        else
        {

         $db->Query("SELECT * FROM `db_mag` WHERE id=".$idTovar);
         while($magtov = $db->FetchArray()){
            $serebro = $magtov['price'] * $sonfig_site["ser_per_wmr"];
            ?>
            <table align="left" cellspacing="5" cellpadding="5" border="1" width="99%">
            <tr>
               <td><H2><?=$magtov["name"];?></H2></td>
               <td><b>Дата публикации:</b> <?=date("d.m.Y",$magtov["date_add"]); ?> в <?=date("H:m:s",$magtov["date_add"]); ?></td>
            </tr>
            <tr>
               <td colspan="2" align="center"><img src="../../uploads/<?php echo $magtov['img']; ?>" width="" height="" /></td>
            </tr>
            <tr>
               <td colspan="2"><?php echo $magtov["description"]; ?></td>
            </tr>
            <tr>
               <td colspan="1"><b>Цена:</b> <?=$magtov['price'];?> RUB</td>
               <td colspan="1"><a href="/magazin/show/<?=$magtov['id'];?> ">КУПИТЬ</a></td>
            </tr>
         </table>
      <?php
         }
      }
   }
   else
   {
      #start //echo "no bye";
?>

<?php

      if(isset($_GET["cat"])){
         $idCat = $_GET["cat"];

         $db->Query("SELECT * FROM `db_mag` WHERE `id_cat` = '$idCat'  ORDER BY `id` DESC ");

         if($db->NumRows() > 0){

            while($mag = $db->FetchArray()){
         ?>

            <table align="left" cellspacing="5" cellpadding="5" border="1" width="99%">
            <tr>
               <td>№<?=$mag["id"];?></td>
               <td><b><?=$mag["name"];?></b></td>
               <td><b>Дата публикации:</b> <?=date("d.m.Y",$mag["date_add"]); ?> в <?=date("H:m:s",$mag["date_add"]); ?></td>
            </tr>
            <tr>
               <td colspan="3"><img src="/uploads/<?=$mag['img'];?>" width="" height="35%" >&nbsp;&nbsp;<?php $desc=$mag["description"]; echo substr("$desc", 0, 100)."..."; /* читаем с нулевого символа, до 100 и добавляем многоточие */ ?></td>
            </tr>
            <tr>
               <td colspan="2"><a href="/magazin/buy/<?=$mag['id'];?>">Подробнее о товаре ...</a></td>
            </tr>
            </table>
             <HR/>
         <?php
            }

         }
         else
         {
            $db->Query("SELECT COUNT(*) FROM `db_mag_cat` WHERE id = '$idCat' ");
            if($db->FetchRow() !== 0){ // Проверка на существование товара в магазине
               echo "<center><H2 style='color:red'>Такой категории товара НЕТ! <a href='/magazin'>Назад</a></H2></center>";
            }
            else
            {
               echo "<center><H2 style='color:red'>Такого товара НЕТ! <a href='/magazin'>Назад</a></H2></center>";
            }

         }

      }
      else
      {
         # ========== Постраничная навигация =============== #
            DEFINE('ITEMS_PER_PAGE', 8); # <= количество товаров на страницу
            // Выбираем из БД общее количество записей
            $db->Query("SELECT COUNT(*) FROM `db_mag` ");
            //$res = $db->FetchRow();
            $total = $db->FetchRow( 0, 0 );

            // Проверяем передан ли номер текущей страницы
            if ( isset($_GET['page']) ) {
              $page = (int)$_GET['page'];
              if ( $page < 1 ) $page = 1;
            } else {
              $page = 1;
            }

            // Сколько всего получится страниц
            $cnt_pages = ceil( $total / ITEMS_PER_PAGE );
            if ( $page > $cnt_pages ) $page = $cnt_pages;
            // Начальная позиция
            $start = ( $page - 1 ) * ITEMS_PER_PAGE;
         # ========== /Постраничная навигация =============== #

         $db->Query("SELECT * FROM `db_mag` ORDER BY `id` DESC LIMIT ".$start.", ".ITEMS_PER_PAGE);

         if($db->NumRows() > 0){
            while($mag = $db->FetchArray()){
         ?>

            <table align="left" cellspacing="5" cellpadding="5" border="1" width="99%">
            <tr>
               <td>№<?=$mag["id"];?></td>
               <td><b><?=$mag["name"];?></b></td>
               <td><b>Дата публикации:</b> <?=date("d.m.Y",$mag["date_add"]); ?> в <?=date("H:m:s",$mag["date_add"]); ?></td>
            </tr>
            <tr>
               <td colspan="3"><img src="/uploads/<?=$mag['img'];?>" width="" height="35%" >&nbsp;&nbsp;<?php $desc=$mag["description"]; echo substr("$desc", 0, 100)."..."; /* читаем с нулевого символа, до 100 и добавляем многоточие */ ?></td>
            </tr>
            <tr>
               <td colspan="2"><a href="/magazin/buy/<?=$mag['id'];?>">Подробнее о товаре ...</a></td>
            </tr>
            </table>
             <HR/>
         <?php
            }

         }else echo "<br /><center>Товаров нет!</center>";

         # ========== Постраничная навигация =============== #
             if ( $cnt_pages > 1 ){
             echo '<div style="margin:1em 0">&nbsp;Страницы: ';
             // Проверяем нужна ли стрелка "В начало"
             if ( $page > 3 )
                 $startpage = '<a href="/magazin/1"><<</a> ... ';
             else
                 $startpage = '';
             // Проверяем нужна ли стрелка "В конец"
             if ( $page < ($cnt_pages - 2) )
                 $endpage = ' ... <a href="/magazin/'.$cnt_pages.'">>></a>';
             else
                 $endpage = '';

             // Находим две ближайшие станицы с обоих краев, если они есть
             if ( $page - 2 > 0 )
                 $page2left = ' <a href="/magazin/'.($page - 2).'">'.($page - 2).'</a> | ';
             else
                 $page2left = '';
             if ( $page - 1 > 0 )
                 $page1left = ' <a href="/magazin/'.($page - 1).'">'.($page - 1).'</a> | ';
             else
                 $page1left = '';
             if ( $page + 2 <= $cnt_pages )
                 $page2right = ' | <a href="/magazin/'.($page + 2).'">'.($page + 2).'</a>';
             else
                 $page2right = '';
             if ( $page + 1 <= $cnt_pages )
                 $page1right = ' | <a href="/magazin/'.($page + 1).'">'.($page + 1).'</a>';
             else
                 $page1right = '';

             // Выводим меню
             echo $startpage.$page2left.$page1left.'<strong>'.$page.'</strong>'.$page1right.$page2right.$endpage;

             echo '</div>';
             }
         # ========== /Постраничная навигация =============== #

         }#Finish //echo "no cat";

   }#Finish //echo "no bye";

 }#Finish //echo "no show";
?>


</div>
<div class="clr"></div>
</center>
            
            </div>
            
               </div>
         
<div class="clr"></div></div><div class="clr"></div><br><br></div><div class="clr"></div>
   </body>
</html>

Огромное спасибо за ответы!
 
Теги:
 

Скрипт "МЛМ" 5RUB

Автор shans5Раздел Скрипты инвестиционных проектов ( не фф )

Ответов: 1
Просмотров: 2746
Последний ответ 24 Ноября 2015, 10:27:32
от good7
Скрипт Seo Serf "New"

Автор shans5Раздел Скрипты инвестиционных проектов ( не фф )

Ответов: 4
Просмотров: 627
Последний ответ 01 Февраля 2018, 06:21:45
от romcka8
Скрипт "Ферма соседи" 2.0 0

Автор shans5Раздел Скрипты фруктовых ферм

Ответов: 5
Просмотров: 3668
Последний ответ 11 Апреля 2018, 11:33:42
от vituxa
Скрипт удвоителя Payeer (Double-Payeer)

Автор velas85Раздел Скрипты инвестиционных проектов ( не фф )

Ответов: 5
Просмотров: 1197
Последний ответ 14 Марта 2019, 18:43:04
от Иван76
Скрипт модуль - "Камикадзе"

Автор barakudaРаздел Модули для фруктовых ферм

Ответов: 8
Просмотров: 4221
Последний ответ 04 Сентября 2016, 18:17:40
от DRAGONS
Имя пользователя:
Пароль:
Session: