2011-04-27 71 views
-1
<?php 
    // параметры подключения к базе 
    $server = 'mysql.hoster.ru'; 
    $login = 'usershop'; 
    $password = 'pass'; 
    $database = 'user_shop'; 

    // соединение с базой 
    $conn = mysql_connect($server, $login, $password) or die('Can not connect to SQL server'); 
    mysql_select_db($database); 
    $q = mysql_real_escape_string($_POST['q']); 

    // выбор кодировки сервера 
    mysql_query('SET character_set_database = utf8'); 
    mysql_query('SET NAMES utf8'); 
    // INNER запрос 
    $sql = "SELECT prod.name_ru, prod.Price, pic.thumbnail, prod.slug FROM SC_products prod INNER JOIN SC_product_pictures pic ON prod.default_picture = pic.photoID WHERE prod.name_ru LIKE'%".$q."%' LIMIT 10"; 
    if(isset($_POST['q'])) { 
     $query = mysql_query($sql, $conn); 
     if ($query) { 
      // запрос стоймости валюты 
      $price = mysql_query('SELECT currency_value FROM SC_currency_types WHERE CID = 3', $conn); 
      while ($crow = mysql_fetch_array($price, MYSQL_ASSOC)) { 
       $currency = $crow['currency_value']; 
      } 
?> 
      <?php print '<span class="search">'.$q.'</span><br>'; ?> 
      <table class="listTable"> 
<?php 
      while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { 
?> 
       <tr> 
        <!-- фото товара --> 
        <td> 
         <div> 
          <a class="searchLink" href="http://www.site.org/product/<?php echo $row['slug']; ?>/"> 
           <img width="80" src="http://www.site.org/published/publicdata/Z114290SHOP/attachments/SC/products_pictures/<?php echo $row['thumbnail'] ?>"> 
          </a> 
         </div> 
        </td> 

        <!-- наименование --> 
        <td> 
         <div> 
          <a class="searchLink" href="http://www.site.org/product/<?php echo $row['slug']; ?>/"> 
          <?php 
           $str = $row['name_ru']; 
           $hstr = str_replace($q, '<span class="hl">'.$q.'</span>', $str); 
           echo $hstr; 
          ?> 
          </a> 
         </div> 
        </td> 

        <td> 
         <div onclick="fill('<?php echo $row['name_ru']; ?>');"> 
          <?php echo '<span class="value">'.round($row['Price']*$currency, 2).'&nbsp;руб.</span>'; ?> 
         </div> 
        </td> 
       </tr> 
<?php 
      } 
?> 
      </table> 
<?php 
     } 
    } else { 
     echo 'Nothing'; 
    } 
    mysql_close($conn); 
?> 

回答

3

尽管我同意teresko说的话,我会回答关于提供的脚本的问题。

合并到SQL语句中的唯一用户输入是$ q,它使用正确的函数(mysql_real_escape_string)进行转义。

如果注册全局变量被激活,$ q可能意味着两种不同的东西:$ _POST或者下面声明的变量。我会将$ q重命名为$ q2或其他名称,以清除这种不明确性。

但除此之外,脚本看起来对sql注入是安全的,除非有一个我从来没有听说过的新漏洞。

+0

感谢您的评论 – VeroLom 2011-04-27 12:59:15

相关问题