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 Какие значения нужна дополнить в код? Спасибо! Quote 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 Quote Link to post Share on other sites
mkrhst 14 Posted February 29, 2016 Report Share Posted February 29, 2016 А чего просто не заменить переменную id на login в запросе к БД? Quote Link to post Share on other sites
Fokebox 463 Posted February 29, 2016 Author Report Share Posted February 29, 2016 А чего просто не заменить переменную id на login в запросе к БД? Это я мог бы, но мне нужен и тот и другой вариант в одном файле ) Quote 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); } Не проверял, может где опечатался Quote 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); ?> Quote Link to post Share on other sites
Модератор files 2797 Posted March 10, 2016 Модератор Report Share Posted March 10, 2016 if ( mysql_num_rows( $result ) ) { $row = mysql_fetch_assoc($result); //здесь точно забыли закрыть } Quote 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); //здесь точно забыли закрыть } Там ниже я закрываю всё это дело ) Quote 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); И отправь ручками запрос Quote 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'" Но пользователь однозначно в таблице есть ) Quote Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Ну так вы не видите, что у вас в запросе скорей всего отправляется не логин а id Quote 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 Но ничего не работает Quote 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'" Quote 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 я вроде исправил Quote 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']); Quote 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" } Quote 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 Quote 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 ште - он вообще зачем нужен был? Quote Link to post Share on other sites
e2site 54 Posted March 10, 2016 Report Share Posted March 10, 2016 Спасибо! Вроде заработало ... а так учимся ) просто код по id работает корректно ... решил переделать под login и не понимал, почему не пашет! а fnhb,en ште - он вообще зачем нужен был? Он преобразует значение в тип Integer Quote Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Он преобразует значение в тип Integer Понятно ) Это для меня лес пока что ) Модеры - тему можно закрывать, проблема решена ) Спасибо тем, кто помогал и большое спасибо e2site Quote Link to post Share on other sites
VIP campusboy 912 Posted March 10, 2016 VIP Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Pro100Fun 1 Quote Link to post Share on other sites
Pro100Fun 852 Posted March 10, 2016 Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Ты тут не помощник)))))) Пропустил ТС твой код вероятно, а может быть просто не стал пробовать Quote Link to post Share on other sites
Fokebox 463 Posted March 10, 2016 Author Report Share Posted March 10, 2016 Интересно, а чем Вас мой код в самом начале не устроил?))) Да не, всё устроило, но я действительно не стал прорабатывать, так как хотелось всё же понять, что не так в моём было дело + там встроено изменение данных через формы ), поэтому не стал! Но всё равно и за Ваше сообщение спасибо! Я его отработаю, но уже на чём-нить другом ) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.