Проверка наличия строки из URI в БД

Тема в разделе "Как сделать...", создана пользователем kleriks, 5 ноя 2014.

Статус темы:
Закрыта.
  1. kleriks

    kleriks Постоялец

    Заблокирован
    Регистр.:
    3 июн 2010
    Сообщения:
    108
    Симпатии:
    42
    в php не селен.
    есть небольшая задача.
    Есть запрос к примеру
    site.ru/1234567123
    помогите найти скрипт который при таком запросе будет проверять наличие 1234567123 в базе mysql
    и если есть такое в базе будет давать ответ "ok" если нету то ответ "bad"
     
  2. Sergian

    Sergian Писатель

    Регистр.:
    26 окт 2014
    Сообщения:
    5
    Симпатии:
    5
    Один из вариантов проверить наличие таблицы с именем "1234567123" в базе mysql:

    PHP:
    <?php
    $bd_Host
    ='localhost';
    $bd_DBName='1234567123';
    $bd_User='root';
    $bd_Pass='';
    if(!
    $db mysql_connect($bd_Host$bd_User$bd_Pass)) exit("MySQL Error - NoConnect!<br/>");
    if(
    mysql_select_db($bd_DBName$db)) echo "ok"; else echo "bad";
    ?>
    ВИ: Петька - приборы
    П: 10
    ВИ: Что 10?
    П: А что приборы?
     
  3. kleriks

    kleriks Постоялец

    Заблокирован
    Регистр.:
    3 июн 2010
    Сообщения:
    108
    Симпатии:
    42
    а как сделать чтобы он проверял не наличие таблицы с таким названием а наличие записи в таблице.
     
  4. Sergian

    Sergian Писатель

    Регистр.:
    26 окт 2014
    Сообщения:
    5
    Симпатии:
    5
    Проверка наличия в БД "tstdb", в таблице "table", записи c полем id = "1234567123"

    PHP:
    <?php
    $bd_Host
    ='localhost';
    $bd_DBName='tstdb';
    $bd_User='root';
    $bd_Pass='';
    $test_str='1234567123';
    if(!
    $db mysql_connect($bd_Host$bd_User$bd_Pass)) exit("MySQL Error - NoConnect!<br/>");
    if(!
    mysql_select_db($bd_DBName$db)) exit("Database Error - NoConnect!<br/>");
    mysql_query("SET NAMES 'UTF8'");
    $count mysql_result(mysql_query('SELECT count(1) FROM `table` WHERE `id` = "'.$test_str.'"'), 0);
    if (
    $count>0) echo 'ok'; else 'bad';
    ?>
     
  5. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    index.php:
    PHP:
    <?php
    $bd_Host
    ='localhost';
    $bd_DBName='tstdb';
    $bd_User='root';
    $bd_Pass='';
    $test_str=$_GET['str'];
    if(!
    $db mysql_connect($bd_Host$bd_User$bd_Pass)) exit("MySQL Error - NoConnect!<br/>");
    if(!
    mysql_select_db($bd_DBName$db)) exit("Database Error - NoConnect!<br/>");
    mysql_query("SET NAMES 'UTF8'");
    $count mysql_result(mysql_query('SELECT count(1) FROM `table` WHERE `id` = "'.$test_str.'"'), 0);
    if (
    $count>0) echo 'ok'; else 'bad';
    ?>
    и туда же .htaccess запихните:
    Код:
    RewriteEngine On
    RewriteRule ^/([0-9]+)(/?)$ index.php?str=$1 [L]

    А лучше сразу скрипту передавать:
    site.ru/?str=1237012737

    И в PHP переменная $_GET['str'] будет равняться 1237012737

    И просто так нельзя это всё оставлять на виду. Надо проверки делать или SQL Injection у Вас проведут
     
    Последнее редактирование: 1 дек 2014
    kleriks нравится это.
  6. GDim

    GDim Писатель

    Регистр.:
    16 янв 2015
    Сообщения:
    0
    Симпатии:
    0
    PHP:
    <?php
    $bd_Host
    ='localhost';
    $bd_DBName='database';
    $bd_User='root';
    $bd_Pass='';
    if(!
    $db mysql_connect($bd_Host$bd_User$bd_Pass)) exit("MySQL Error - NoConnect!<br/>");
    if(!
    mysql_select_db($bd_DBName$db)) exit("Database Error - NoConnect!<br/>");
    mysql_query("SET NAMES 'UTF8'");
    $uri $_SERVER['REQUEST_URI']; //получаем URI, который был передан для того, чтобы получить доступ к этой странице. Например, '/index.html'.
    mysql_real_escape_string($uri); // экранируем от sql инъекций
    $count mysql_result(mysql_query('SELECT count(1) FROM `table` WHERE `id` = "'.$uri.'"'), 0);
    if (
    $count>0) echo 'ok'; else 'bad';
    ?>
    А вообще, как говорили выше, лучше использовать GET переменные.
    site.ru/?param=123456
    PHP:
    $string $_GET['param'];
    и не забывает экранировать переменные, которые подставляем в запрос:
    PHP:
    mysql_real_escape_string($string);
     
  7. unpunk

    unpunk Писатель

    Регистр.:
    25 янв 2015
    Сообщения:
    5
    Симпатии:
    2
    При этом надо понимать, что одно только использование mysql_real_escape_string не является гарантией безопасности.
    Достаточно заменить
    PHP:
    'SELECT count(1) FROM `table` WHERE `id` = "'.$uri.'"'
    на
    PHP:
    'SELECT count(1) FROM `table` WHERE `id` = '.$uri
    чтобы получить проблемы с SQL-инъекцией вида http://site.ru/?str=1 OR 1=1 :)

    Такие мелочи иногда пропускают по невнимательности.
     
    Последнее редактирование: 27 янв 2015
Статус темы:
Закрыта.