Иван444
17.11.2013 - 10:03
Здравствуйте уважаемые форумчане! Подскажите пожалуйста как можно осуществить или где об этом почитать, следующее.
Вот есть сайт
http://pinerov.com/#CatalogЕсли навести мышкой на какой то товар, то там естественно будет ссылка, на него ведущая.
Например такого вида
http://pinerov.com/pinerov-500 т.е. методом GET передается именно тот товар какой мы выбираем (я так думаю)
Получается из БД идет сортировка по каким либо данным переданными в методе GET.(думаю я)
Но получается если какой то негодяй в браузере напишет, что то не то, тогда будет соответственно ошибка. Значит нужно перед этим как то проверить есть ли такой товар в БД , подскажите пожалуйста как можно это сделать, может кто нибудь сталкивался, знает где можно почитать. Я вообще что то додуматься не могу(((
Valick
17.11.2013 - 10:13
Цитата |
Значит нужно перед этим как то проверить есть ли такой товар в БД |
Я всегда говорил, что лучше больше думать, чем делать, но в вашем случае наоборот... перестаньте думать, а просто сделайте запрос к БД и посмотрите есть там этот товар или нет.
Если вы имеете ввиду валидацию данных, то это несколько другой аспект.
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата |
Но получается если какой то негодяй в браузере напишет, что то не то, тогда будет соответственно ошибка. Значит нужно перед этим как то проверить есть ли такой товар в БД , подскажите пожалуйста как можно это сделать, может кто нибудь сталкивался, знает где можно почитать. Я вообще что то додуматься не могу((( |
Действительно попробуйте сделать запрос, перед тем, как вытащить инфу о товаре, вам же нужно будет проверить есть она там вообще или нет, ну есть ли там такая строка.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Иван444
17.11.2013 - 10:24
Цитата (Valick @ 17.11.2013 - 10:13) |
Цитата | Значит нужно перед этим как то проверить есть ли такой товар в БД |
Я всегда говорил, что лучше больше думать, чем делать, но в вашем случае наоборот... перестаньте думать, а просто сделайте запрос к БД и посмотрите есть там этот товар или нет. Если вы имеете ввиду валидацию данных, то это несколько другой аспект.
|
Просто представим, что я делаю такой запрос и методом $_GET кто то ввел что угодно, тогда будет ошибка(я предпологаю), а мне нужно чтобы её не было.
$res = mysqli_query($conn, " SELECT * FROM `название таблицы` WHERE `название товара` = " . $_GET['название товара'] ."" LIMIT 1 ") or exit(mysqli_error());
тема актуальна
Иван444
17.11.2013 - 10:39
Цитата (ABC @ 17.11.2013 - 10:22) |
Цитата | Но получается если какой то негодяй в браузере напишет, что то не то, тогда будет соответственно ошибка. Значит нужно перед этим как то проверить есть ли такой товар в БД , подскажите пожалуйста как можно это сделать, может кто нибудь сталкивался, знает где можно почитать. Я вообще что то додуматься не могу((( |
Действительно попробуйте сделать запрос, перед тем, как вытащить инфу о товаре, вам же нужно будет проверить есть она там вообще или нет, ну есть ли там такая строка.
|
Поясните пожалуйста чего я не понимаю(
Иван4441. Там внизу есть буковки, код нужно ими обрамлять, чтоб его можно было читать
2. Итак,
$res = mysqli_query($conn,"
SELECT `id`
FROM `product`
WHERE `name` = '".mysqli_real_escape_string($conn, $_GET['pinerov-500'])."' LIMIT 1 ") or exit(mysqli_error());
mysqli_real_escape_string - нужна чтоб
Цитата |
если какой то негодяй в браузере напишет, что то не то |
читаем о ней:
http://php.net/manual/ru/mysqli.real-escape-string.php
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Иван444
17.11.2013 - 10:43
Цитата (ABC @ 17.11.2013 - 10:39) |
Иван444
1. Там внизу есть буковки, код нужно ими обрамлять, чтоб его можно было читать 2. Итак,
<pre class="sh_sourceCode" rel="php"><span class="sh_variable">$res</span> <span class="sh_symbol">=</span> <span class="sh_function">mysqli_query</span><span class="sh_symbol">(</span><span class="sh_variable">$conn</span><span class="sh_symbol">,</span><span class="sh_string">" SELECT `id` FROM `product` WHERE `name` = '"</span><span class="sh_symbol">.</span><span class="sh_function">mysqli_real_escape_string</span><span class="sh_symbol">(</span><span class="sh_variable">$conn</span><span class="sh_symbol">,</span> <span class="sh_variable">$_GET</span><span class="sh_symbol">[</span><span class="sh_string">'pinerov-500'</span><span class="sh_symbol">]).</span><span class="sh_string">"' LIMIT 1 "</span><span class="sh_symbol">)</span> <span class="sh_keyword">or</span> <span class="sh_function">exit</span><span class="sh_symbol">(</span><span class="sh_function">mysqli_error</span><span class="sh_symbol">());</span> </pre>
mysqli_real_escape_string - нужна чтоб Цитата | если какой то негодяй в браузере напишет, что то не то |
|
Вот это не понял (1. Там внизу есть буковки, код нужно ими обрамлять, чтоб его можно было читать)
А на счет функции mysqli_real_escape_string , так ведь она просто экранирует спецсимволы, а если человек тот негодяй о котором мы говорим введет просто выдуманное название товара, то при запросе к БД будет ошибка, правильно?
тема актуальна
Цитата |
А на счет функции mysqli_real_escape_string , так ведь она просто экранирует спецсимволы, а если человек тот негодяй о котором мы говорим введет просто выдуманной название товара, то при запросе к БД будет ошибка, правильно? |
http://php.net/manual/ru/mysqli-result.num-rows.phpСмотри пример №2.
При помощи mysqli_num_rows ты определишь есть ли такая строка, которую запросил юзер, если он негодяй, то просто вернется 0 и ты его отправишь подальше, если строки будут, то он хороший юзер.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Иван444
17.11.2013 - 11:03
Цитата (ABC @ 17.11.2013 - 10:59) |

|
Спасибо большое, а то я тупил не понимая почему так криво происходит с кодом)))
Иван444
17.11.2013 - 11:05
Цитата (ABC @ 17.11.2013 - 10:45) |
Цитата | А на счет функции mysqli_real_escape_string , так ведь она просто экранирует спецсимволы, а если человек тот негодяй о котором мы говорим введет просто выдуманной название товара, то при запросе к БД будет ошибка, правильно? |
http://php.net/manual/ru/mysqli-result.num-rows.phpСмотри пример №2. При помощи mysqli_num_rows ты определишь есть ли такая строка, которую запросил юзер, если он негодяй, то просто вернется 0 и ты его отправишь подальше, если строки будут, то он хороший юзер. |
Посмотрел, но что то не дошло. Расскажу что я увидел. Эта функция mysqli_num_rows как я понял, возвращает количество строк, полученных в результате запроса к БД.
Т.е. сначала все же идет запрос, а потом уже мы проверяем кол-во строк.
А у нас при таком варианте даже первый запрос не пройдет т.к. будет ошибка потому что негодяй в GET напишет какую нибудь гадость, или я чего то не понимаю?(
тема актуальна
Иван444
Чтобы он там не написал...любую гадость, максимум плохого что может произойти это прийти результат в ноль строк.
mysqli_real_escape_string - позаботится, чтоб гадость не навредила. А результат в ноль строк скажет. что такой гадости просто нет в таблице, если хочешь дальше выведи ему на экран:
"По вашему запросу ничего не найдено."
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Иван444
17.11.2013 - 11:37
Вот на этом уровне будет уже ошибка правильно? Т.к. в $_GET['pinerov-500'] попадет что то чего нет в БД и из за этого будет ошибка.
$res = mysqli_query($conn,"
SELECT `id`
FROM `product`
WHERE `name` = '".mysqli_real_escape_string($conn, $_GET['pinerov-500'])."' LIMIT 1 ") or exit(mysqli_error());
А подсчет строк производится после запроса, т.е. его не будет, или нет?
CoopeR
17.11.2013 - 11:42
<?php
$tovar = $_GET['pinerov-500'];
$query = sprintf("SELECT `id` FROM `product`
WHERE `name` = '%s'",
mysql_real_escape_string($tovar));
$result = mysql_query($query);
if ($result) {
echo 'ура есть такой товар и выводм результат':
} else {
die('нет такоко товара');
}
_____________
Нажимаю "Мой компьютер"... не моет, сукоо...
Познакомлюсь с девушкой, можно крякнутая версия...
Иван444
17.11.2013 - 12:09
Цитата (CoopeR @ 17.11.2013 - 11:42) |
<?php $tovar = $_GET['pinerov-500']; $query = sprintf("SELECT `id` FROM `product` WHERE `name` = '%s'", mysql_real_escape_string($tovar)); $result = mysql_query($query);
if ($result) { echo 'ура есть такой товар и выводм результат': } else { die('нет такоко товара'); } |
Извини не мог бы ты пояснить что тут происходит, не могу разобраться
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.