PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
serg2211 Отправлено: 29 Октября, 2017 - 13:06:10 • Тема: Замена mysql_escape_string() на mysqli_real_escape_string() • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 111
Vladimir Kheifets пишет:

Я не пользовался конверторами. Изменял так:
1.Подключаю include_once("db.php");
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class DB
  3. {
  4. static $link;
  5. static $dbname;      
  6.         public static function connect()
  7.         {
  8.                 if(empty(self::$link))
  9.                 {
  10.                   $dbhost = 'xxxxxxxxx';
  11.                   $dbuser = 'xxxxxxxx';
  12.                   $dbpassword = 'xxxxxxxxxxxxx';
  13.                   $dbname = 'xxxxxxxxxxxx';
  14.  
  15.                         self::$link = @mysqli_connect($dbhost,$dbuser,$dbpassword,$dbname);
  16.                         self::$dbname=$dbname;
  17.                         //mysqli_set_charset(self::$link, 'utf8'); //если нужно, раскомментировать
  18.                 }
  19.         }
  20. }      
  21. DB::connect();
  22. ?>




Здравствуйте, Владимир! Я вам очень признателен за ваш быстрый отклик и ваше время! У меня, конечно же, возникло несколько вопросов:
1) мне нужно подключать mysqli к базе данных на каждой странице, на которой присутствуют функции mysqli, или я это делаю один раз? Я где-то прочитал, что такое подключение делается в файле ini.php, но я даже не знаю где его искать. Вы, как я понял, предложили создать новый файл db.php для подключения, или можно использовать уже существующий functions.php, который выглядит сейчас вот так после использования конвертера:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. //Set the name of the Table, Database, Username and Password for Mysql.
  5. $db_name = "ххххххххххх";
  6.  
  7. $connection = @($GLOBALS["___mysqli_ston"] = mysqli_connect("хххххххх",  "ххххххх",  "хххххххххх"))
  8.  
  9.     or die("Couldn't connect.");
  10.  
  11. $db = @((bool)mysqli_query( $connection, "USE " . $db_name))
  12.  
  13.     or die("Couldn't select database.");
  14.  
  15. function db_errno($args=array()) {
  16.  
  17.     return @((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_errno($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_errno()) ? $___mysqli_res : false));
  18.  
  19. }
  20. function db_error($args=array()) {
  21.  
  22.     return @((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false));
  23.  
  24. }
  25. ?>
  26.  
  27.  


Если нужно создать файл db.php, то куда его помещать?

2) Если я подключаюсь на каждой странице, нужно использовать include_once(), include() или require()? (есть между ними существенная разница?)

3) Конвертер делает следующее с mysql функциями (на примере с двумя из них):
До изменения:
PHP:
скопировать код в буфер обмена
  1. if (!$sel_record) {
  2. header("Location: http://$url$directory/admin/admin_edit_item1.php?".sid);
  3.                         exit;
  4.                 }
  5.                
  6.                         $sql = "SELECT * FROM review_items WHERE item_id='$sel_record'";
  7.                
  8.                                         $sql_result = mysql_query($sql)
  9.                 or die(sprintf("Couldn't execute query, %s: %s", db_errno(), db_error()));
  10.  
  11.                 if (!$sql_result) {  
  12.    
  13.                         echo "<P>Couldn't get item!";
  14.  
  15.                 } else {
  16.                          while ($row = mysql_fetch_array($sql_result)) {
  17.         $item_name = stripslashes($row["item_name"]);
  18.         $category = stripslashes($row["category"]);
  19.         $item_type = stripslashes($row["item_type"]);
  20.         $item_desc = stripslashes($row["item_desc"]);
  21.         $item_url = stripslashes($row["item_url"]);
  22.         $item_info = stripslashes($row["item_info"]);
  23. }                      
  24.  
  25. BodyHeader("Edit Item!");
  26. ?>


После конвертирования:

PHP:
скопировать код в буфер обмена
  1. $sel_record = $_POST['sel_record'];
  2.  
  3.         if (!$sel_record) {
  4. header("Location: http://$url$directory/admin/admin_edit_item1.php?".sid);
  5.             exit;
  6.         }
  7.  
  8.             $sql = "SELECT * FROM review_items WHERE item_id='$sel_record'";
  9.  
  10.                     $sql_result = mysqli_query($GLOBALS["___mysqli_ston"], $sql)
  11.         or die(sprintf("Couldn't execute query, %s: %s", db_errno(), db_error()));
  12.  
  13.         if (!$sql_result) {
  14.  
  15.             echo "<P>Couldn't get item!";
  16.  
  17.         } else {
  18.              while ($row = mysqli_fetch_array($sql_result)) {
  19.     $item_name = stripslashes($row["item_name"]);
  20.     $category = stripslashes($row["category"]);
  21.     $item_type = stripslashes($row["item_type"]);
  22.     $item_desc = stripslashes($row["item_desc"]);
  23.     $item_url = stripslashes($row["item_url"]);
  24.     $item_info = stripslashes($row["item_info"]);
  25. }
  26.  
  27. BodyHeader("Edit Item!");
  28. ?>


Мне интересно узнать ваше мнение об этом варианте. Как я понимаю, параметр $GLOBALS["___mysqli_ston"] обозначает ссылку или тут что-то другое? Я не знаю работает такой вариант или нет, т.к. без закачки файлов на сервер не могу проверить работоспособность.
Если есть какой-нибудь online PHP редактор/симулятор где можно сразу же увидеть изменения в скрипте, пожалуйста подскажите!

Мне очень стыдно, но я не знаю куда в моем скрипте вставлять код, который вы предложили. Не могли бы вы сделать это на примере скрипта, который я предоставил в моем начальном посте plz?

С уважением,
Сергей
serg2211 Отправлено: 29 Октября, 2017 - 03:19:17 • Тема: Замена mysql_escape_string() на mysqli_real_escape_string() • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 111
Здравствуйте, уважаемые форумчане! Я понимаю язык PHP только лишь поверхностно, поэтому решил обратиться к вам за помощью. В 2004-м я приобрел скрипт создающий динамические страницы для обзоров пользователей каким-либо продуктом. С тех пор скрипт еще пока работает, но mysql функции устарели, и теперь мне нужно их заменить на функции mysqli. Для большинства таких функций я использовал конвертор online, который просто добавляет глобальный параметр, но я не понимаю как это работает и не знаю будет ли скрипт функционировать.

Одну функцию - mysql_escape_string(), не удалось сконвертировать, т.к. она не поддерживается конвертером. Я попытался вникнуть в тонкости этой функции в мануале PHP, и пролистал интернет, чтобы найти способ ее замены, но, без специального образования, мне, по большей части, не удалось понять прочитанное. Я понимаю, что для многих знатоков языка PHP решение этого вопроса заняло бы несколько минут, но для меня это тупик.

Ниже я прикрепляю скрипт одной из страниц где присутствуют несколько функций mysql, включая mysql_escape_string(). Имея корректный заменяющий код, я смог бы сделать замену устаревших функций и на других страницах. Пожалуйста помогите! Спасибо!

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //if a session does not yet exist for this user, start one
  3.  
  4. //if there is no username or password entered and the user has not already been validated, send user back to login page.
  5. if ((empty($_POST["admin_username"]) || empty($_POST["admin_passtext"])) && empty($_SESSION['valid_user']))
  6.                         {
  7.                         Header("Location: index.php");
  8.                         }
  9.  
  10. include ("../body_edit.php");
  11. include ("../config.php");
  12. include ("../functions.php");
  13.  
  14. //make sure user has been logged in.
  15. if (empty($_SESSION['valid_user']))
  16.         {
  17.         // User not logged in, check database
  18. //Check to see that the username and Password entered have admin access.
  19. $sqlaccess = "SELECT username, passtext
  20.                 FROM admin
  21.                 WHERE username='" . mysql_escape_string($_POST['admin_username']) . "'
  22.                 AND passtext = '" . mysql_escape_string($_POST['admin_passtext']) . "'
  23.                 LIMIT 1
  24.                 ";
  25.  
  26.         $resultaccess = mysql_query($sqlaccess)
  27.         or die(sprintf("Couldn't execute sql_count, %s: %s", db_errno(), db_error()));
  28.  
  29.         $numaccess = mysql_numrows($resultaccess);
  30.  
  31.         if ($numaccess == 0) {
  32. BodyHeader("Access Not Allowed!");
  33. ?>
  34. <style type="text/css">
  35. <!--
  36. .style1 {color: #FF0000}
  37. .style2 {
  38.         font-family: Arial, Helvetica, sans-serif;
  39.         font-size: 12px;
  40. }
  41. .style3 {font-family: Arial, Helvetica, sans-serif; font-size: 14px; }
  42. -->
  43. </style>
  44. <P>To access the Administration area you need to have approved access. The username and Password (<?PHP echo "$admin_username and $admin_passtext"; ?>) you entered are not approved!<br>
  45.   <a href="index.php">Please try again</a>
  46.   <?PHP
  47. BodyFooter();  
  48. }// if numaccess
  49.  
  50. //if the user/pass were valid create a session for the user.
  51. $_SESSION['admin_passtext'] = $_POST['admin_passtext'];
  52. $_SESSION['admin_username'] = $_POST['admin_username'];
  53.  
  54. //since user has been verified, set a session for checking on admin pages.
  55. $_SESSION['valid_user'] = $_POST['admin_username'];
  56.  
  57. //set cookie so admin can save login info if logout link is not clicked.
  58. if (empty($_COOKIE['admin_username']) && empty($_COOKIE['admin_passtext'])) {
  59. setcookie("admin_username", $_POST['admin_username'], time() + 31536000, "/");
  60. setcookie("admin_passtext", $_POST['admin_passtext'], time() + 31536000, "/");
  61. }//if cookie
  62.         }//if session
  63.  
  64. BodyHeader("$sitename Administration Menu");
  65.            
  66. //Get the number of reviews that are not approved.
  67.             $result = mysql_query("SELECT COUNT(*) as total FROM review WHERE approve='n'
  68.                 AND
  69.                 review_item_id != '0'")
  70.                 or die(sprintf("Couldn't execute sql_count, %s: %s", db_errno(), db_error()));
  71.  
  72.     $rows = mysql_fetch_array($result);
  73.  
  74.     $total = $rows["total"];
  75.  
  76. //Get the total number of reviews that are approved.
  77.             $result = mysql_query("SELECT COUNT(*) as totaly FROM review WHERE approve='y'")
  78.                 or die(sprintf("Couldn't execute sql_count, %s: %s", db_errno(), db_error()));
  79.  
  80.     $rows = mysql_fetch_array($result);
  81.     $totaly = $rows["totaly"]; 
  82.        
  83.         //Get the total number of user submitted items that need to be approved.
  84.             $result = mysql_query("SELECT COUNT(*) as totalitemuser FROM review_items_user")
  85.                 or die(sprintf("Couldn't execute sql_count, %s: %s", db_errno(), db_error()));
  86.  
  87.     $rows = mysql_fetch_array($result);
  88.     $totalitemuser = $rows["totalitemuser"];   
  89.  
  90.             ?>
  91. <table width="90%" align="center" cellpadding=5 cellspacing=5>
  92.   <TR>
  93.     <TD><div align="center" class="style3">Welcome to the Admin Area <?PHP echo $_SESSION['valid_user']; ?></div>
  94.       <span class="style2"><br>
  95.       <?PHP if ($total >=1) { ?>
  96.       Reviews Awaiting Approval:<span class="style1"><B> <a href=admin_approve1.php?<?PHP echo SID?>><?PHP echo "$total" ?></a></B></span></span> <span class="style2"><br>
  97.       <?PHP } ?>
  98.       <?PHP if ($totalitemuser >=1) { ?>
  99.       Number of User Submitted Items: <span class="style1"><B><a href=admin_approve_item_user.php?<?PHP echo SID?>><?PHP echo "$totalitemuser"; ?></a></B></span><br>
  100.       <?PHP } ?>
  101.       <?PHP if ($totaly >=1) { ?>
  102.       Total Number of Reviews: <span class="style1"><B><?PHP echo "$totaly"; ?></B></span></span>
  103.       <span class="style2">
  104.       <?PHP } ?>
  105.       <BR>
  106.       </span>
  107.       <p class="style2"><strong>Reviews </strong> </p>
  108.       <ul class="style2">
  109.         <li><a href="admin_approve1.php?<?PHP echo SID?>">Approve a Review</a>
  110.         <li><a href="admin_del1.php?<?PHP echo SID?>">Delete a Review</a>
  111.         <li><a href="admin_edit1.php?<?PHP echo SID?>">Edit a Review </a>
  112.         <li><a href="admin_sort.php?<?PHP echo SID?>">Select Display Order within Categories</a> <br>
  113.           <br>
  114.         <li><a href="admin_del_unapp1.php?<?PHP echo SID?>">Delete all Unapproved Reviews<br>
  115.           <br>
  116.           </a><strong>Items</strong>
  117.         <li><a href="admin_add1.php?<?PHP echo SID?>">Add Item for Review</a>
  118.         <li><a href="admin_del_item1.php?<?PHP echo SID?>">Delete Item for Review</a>
  119.         <li><a href="admin_edit_item1.php?<?PHP echo SID?>">Edit Item for Review</a>
  120.         <li><a href="admin_approve_item_user.php?<?PHP echo SID?>">Approve User Submitted Item</a>
  121.         <li><a href="admin_delete_item_user.php?<?PHP echo SID?>">Delete User Submitted Item</a> <br>
  122.           <br>
  123.           <strong>Categories</strong>
  124.         <li> <a href="admin_add_cat.php?<?PHP echo SID?>">Add a Category </a>
  125.         <li><a href="admin_del_cat.php?<?PHP echo SID?>">Delete a Category</a>
  126.         <li><a href="admin_edit_cat1.php?<?PHP echo SID?>">Edit a Category </a>
  127.         <li><a href="admin_sort_cat.php?<?PHP echo SID?>">Set Display Order for Categories </a><br>
  128.           <BR>
  129.           <strong>Miscellaneous</strong>
  130.         <li><a href="../demo.php?<?PHP echo SID?>">View Reviews</a>
  131.         <li><a href="admin_view_recommendations.php?<?PHP echo SID?>">View Recommendations</a>
  132.         <li><a href="admin_pic.php?<?PHP echo SID?>">Submit a picture</a>                  
  133.         <li><a href="admin_bad_words.php?<?PHP echo SID?>">Bad Word Filter</a>
  134.         <li><a href="admin_change_p.php?<?PHP echo SID?>">Change Admin Password</a>
  135.         <li><a href="../layouts.php?<?PHP echo SID?>">Display Optional Layouts</a><br>
  136.           <br>
  137.         <li><a href="logout.php?<?PHP echo SID?>">Logout</a>
  138.       </ul>
  139.       <span class="style2"><BR>
  140.       <br>
  141.       </span></TD>
  142.   </TR>
  143. </table>
  144. <?PHP
  145.         BodyFooter();
  146.                 exit;
  147. ?>


С уважением,
Сергей

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB