Fokebox 463 Posted February 29, 2016 Report Share Posted February 29, 2016 Привет всем! В общем вот код у меня, который выводит данные из таблицы по id пользователя через запрос из браузера user.php?id=1: <?php $id = mysql_real_escape_string($_GET['id']); $data = mysql_query("SELECT * FROM users WHERE id = '$id'") or die(mysql_error()); $row = mysql_fetch_assoc($data); $id = isset($_GET['id']) ? (int)$_GET['id']: false; if(!isset($_GET['id'])){echo "Right";} elseif(!(int)($_GET['id'])){echo "The id does not exist";}else{ $id = mysql_real_escape_string($_GET['id']); } $sql = "SELECT * FROM `users` WHERE `id` = '$id'"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); if ( mysql_num_rows( $result ) ) { $row = mysql_fetch_assoc($result); ?> Хотелось бы сделать, чтобы была возможность также вывода данных через запрос логина из браузера типа так: user.php?login=user Какие значения нужна дополнить в код? Спасибо! Link to post Share on other sites
VIP campusboy 912 Posted February 29, 2016 VIP Report Share Posted February 29, 2016 $id = !empty( (int)$_GET['id'] ) ? (int)$_GET['id'] : false; $login = !empty( $_GET['login'] ) ? mysql_real_escape_string( $_GET['login'] ) : false; if ( $id ) $query_where = "`id` = '$id'"; if ( $login && !$id ) $query_where = "`login` = '$login'"; if ( !$login && !$id ) die(); $sql = "SELECT * FROM `users` WHERE $query_where"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); Я так понимаю, что Ваш код вырван из общего кода, часть из этого непонятно к чему относится. Переписал так. ID идёт в приоритете, так как там передаётся численное значение, то оно безопаснее, в первую очередь работаем с ним. Если ID нет, но есть login, работает с ним (тут желательно для валидации применять более сложные фильтры от разного рода sql-инъекций и так далее). Если нет ни того, ни другого - прерывать выполнение скрипта. Pro100Fun 1 Link to post Share on other sites
mkrhst 14 Posted February 29, 2016 Report Share Posted February 29, 2016 А чего просто не заменить переменную id на login в запросе к БД? Link to post Share on other sites
Fokebox 463 Posted February 29, 2016 Author Report Share Posted February 29, 2016 А чего просто не заменить переменную id на login в запросе к БД? Это я мог бы, но мне нужен и тот и другой вариант в одном файле ) Link to post Share on other sites
e2site 54 Posted March 2, 2016 Report Share Posted March 2, 2016 Привет всем! В общем вот код у меня, который выводит данные из таблицы по id пользователя через запрос из браузера user.php?id=1: Хотелось бы сделать, чтобы была возможность также вывода данных через запрос логина из браузера типа так: user.php?login=user Какие значения нужна дополнить в код? Спасибо! Если по колхозному, то так $query = false; $queryString = 'SELECT * FROM `users` WHERE'; $error=''; if(isset($_GET['id'])) { $id = (int)$_GET['id']; if(!$id) { $error = "Id isn't number \n"; } else { $queryString .= " `id`='".$id."'"; $query = true; } } if(isset($_GET['login'])) { $login = mysql_real_escape_string($_GET['login']); if(strlen($login)>0) { $error = "Login is empty \n"; } else { if($query) $queryString .= ' and'; $queryString .= " `login`='".$login."'"; $query = true; } } if(!$query){ die($error!=''?$error:'Please send id or login'); } $result = mysql_query($queryString) or die(mysql_error() ."<br/>". $sql); if ( mysql_num_rows( $result ) ){ $row = mysql_fetch_assoc($result); } Не проверял, может где опечатался Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 В общем отказался от этой идеи совмещать файл ... и решил сделать просто отображение данных через запрос по логину ... ну всё переделал, но всё равно сообщает что пользователя нет такого в базе данных, сделал так, может посмотрите, где у меня глаза не видят ошибку? <?php $login = mysql_real_escape_string($_GET['login']); $data = mysql_query("SELECT * FROM users WHERE login = '$login'") or die(mysql_error()); $row = mysql_fetch_assoc($data); $login = isset($_GET['login']) ? (int)$_GET['login']: false; if(!isset($_GET['login'])){echo "Right";} elseif(!(int)($_GET['login'])){echo "The user does not exist";}else{ $login = mysql_real_escape_string($_GET['login']); } $sql = "SELECT * FROM `users` WHERE `login` = '$login'"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); if ( mysql_num_rows( $result ) ) { $row = mysql_fetch_assoc($result); ?> Link to post Share on other sites
Модератор files 2844 Posted March 10, 2016 Модератор Report Share Posted March 10, 2016 if ( mysql_num_rows( $result ) ) { $row = mysql_fetch_assoc($result); //здесь точно забыли закрыть } Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 if ( mysql_num_rows( $result ) ) { $row = mysql_fetch_assoc($result); //здесь точно забыли закрыть } Там ниже я закрываю всё это дело ) Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Сделай $sql = "SELECT * FROM `users` WHERE `login` = '$login'"; var_dump($sql);exit(); $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); И отправь ручками запрос Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Сделай $sql = "SELECT * FROM `users` WHERE `login` = '$login'"; var_dump($sql);exit(); $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); И отправь ручками запрос The user does not existstring(41) "SELECT * FROM `users` WHERE `login` = '0'" Но пользователь однозначно в таблице есть ) Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Ну так вы не видите, что у вас в запросе скорей всего отправляется не логин а id Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Ну так вы не видите, что у вас в запросе скорей всего отправляется не логин а id Что-т не вижу ((( ... везде вроде поменял id на login запрос делаю так user_info.php?login=Admin Но ничего не работает Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Что-т не вижу ((( ... везде вроде поменял id на login запрос делаю так user_info.php?login=Admin Но ничего не работает Весь кода покажите, у вас вместо логина передается 0 "SELECT * FROM `users` WHERE `login` = '0'" Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Весь кода покажите, у вас вместо логина передается 0 "SELECT * FROM `users` WHERE `login` = '0'" Отправил в личку ... да я вижу, что ноль и это странно для меня ... просто у меня есть страница, где выбор по id ... этот код я и пытаюсь переделать, но только выбор по логину, все, что связано с id я вроде исправил Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Покажи вывод var_dump($_GET); session_start(); .. <?php var_dump($_GET);exit(); $login = mysql_real_escape_string($_GET['login']); Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Покажи вывод var_dump($_GET); include("admin... .. <?php var_dump($_GET);exit(); $login = mysql_real_escape_string($_GET['login']); The user does not existarray(1) { ["login"]=> string(5) "Admin" } Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 The user does not existarray(1) { ["login"]=> string(5) "Admin" } А точно, тут косяк $login = isset($_GET['login']) ? (int)$_GET['login']: false; исправь $login = isset($_GET['login']) ? $_GET['login']: false; и замени везде (int)$_GET['login'] на $_GET['login'] и вообще там косяков много, я писал код выше, его используй Fokebox 1 Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 А точно, тут косяк $login = isset($_GET['login']) ? (int)$_GET['login']: false; исправь $login = isset($_GET['login']) ? $_GET['login']: false; и замени везде (int)$_GET['login'] на $_GET['login'] и вообще там косяков много, я писал код выше, его используй Спасибо! Вроде заработало ... а так учимся ) просто код по id работает корректно ... решил переделать под login и не понимал, почему не пашет! а fnhb,en ште - он вообще зачем нужен был? Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Спасибо! Вроде заработало ... а так учимся ) просто код по id работает корректно ... решил переделать под login и не понимал, почему не пашет! а fnhb,en ште - он вообще зачем нужен был? Он преобразует значение в тип Integer Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Он преобразует значение в тип Integer Понятно ) Это для меня лес пока что ) Модеры - тему можно закрывать, проблема решена ) Спасибо тем, кто помогал и большое спасибо e2site Link to post Share on other sites
VIP campusboy 912 Posted March 10, 2016 VIP Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Pro100Fun 1 Link to post Share on other sites
Pro100Fun 852 Posted March 10, 2016 Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Ты тут не помощник)))))) Пропустил ТС твой код вероятно, а может быть просто не стал пробовать Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Да не, всё устроило, но я действительно не стал прорабатывать, так как хотелось всё же понять, что не так в моём было дело + там встроено изменение данных через формы ), поэтому не стал! Но всё равно и за Ваше сообщение спасибо! Я его отработаю, но уже на чём-нить другом ) Link to post Share on other sites
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now