0

у меня на сайте есть авторизация,регистрация я хочу сделать профили юзеров есть такой код:

    <?php
session_start(); 
require_once("config.php"); 
if (isset($_GET['id'])) {$id =$_GET['id']; }
else
{ exit("invalid");}
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");
}
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям! Код ошибки: 0");
   }
   else {
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям! Код ошибки: 1");
    }
}
$id = $_GET['id'];
$my = $_GET['login'];
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");}
?>

Он работает но только для владельца страницы (id 2) /profile.php?id=2 когда я пишу (id 1) /profile.php?id=1 выводится совсем не то что я хочу, а выводится Привет, Username! вместо Ты попал на страницу Username!

<?php
if ($myrow['login']) {
echo "Привет, Username!";
}
else {
    echo "Ты попал на страницу Username!";
}
?>
zavsc
  • 15
  • 2
  • значит что-то где-то не так....что и где - можно включив отображение ошибок и отладкой ...см. выше ↑↑↑ – Алексей Шиманский Aug 31 '22 at 19:37
  • По правде говоря, весь ваш код не очень) $_SESSION - это переменная сервера, в ней достаточно будет хранить ID пользователя и проверять, есть ли значение ID в сессии для авторизации. $id =$_GET['id']; дублируется.. preg_match будет лишним ну и тд.. проверка методом empty не логична.. mysql_query устарел) даже боюсь предположить что пошло не так – Jour Aug 31 '22 at 19:41
  • Я знаю что мой код не очень, но мне нужна помощь – zavsc Aug 31 '22 at 19:42
  • Добавьте в код var_dump($myrow); и посмотрите что выдает – Jour Aug 31 '22 at 19:45
  • @Jour что так всех тянет на va_dump? Надо по-взрослому) – Алексей Шиманский Aug 31 '22 at 19:45
  • @АлексейШиманский Я предполагаю что там будет $myrow[0]['login'] но стоит убедится что переменная вообще что-то в себе содержит) Я больше юзаю print_r))) – Jour Aug 31 '22 at 19:47
  • array(12) { [0]=> string(1) "1" ["id"]=> string(1) "1" [1]=> string(5) "zavsc" ["login"]=> string(5) "zavsc" [2]=> string(4) "test" ["password"]=> string(4) "test" [3]=> string(12) "Кирилл" ["name"]=> string(12) "Кирилл" [4]=> string(12) "Кирилл" ["surname"]=> string(12) "Кирилл" [5]=> string(1) "0" ["status"]=> string(1) "0" } – zavsc Aug 31 '22 at 19:48
  • @zavsc if ($myrow['id'] == $myrow2['id']) { возможно так) + рекомендую заменить mysql_fetch_array на mysql_fetch_assoc не будет значений по индексам) – Jour Aug 31 '22 at 19:55
  • @zavsc ну вот сделай теперь вывод что ты сравниваешь в if и что на самом деле есть в переменной.....какой конкретно путь нужен...... – Алексей Шиманский Aug 31 '22 at 19:55
  • @Jour Не работает, выводится Привет. Username! – zavsc Aug 31 '22 at 19:59
  • @zavsc тогда последний вариант, воспользуйтесь рекомендацией от Алексея из первого сообщения. – Jour Aug 31 '22 at 20:02
  • @Jour PHP message: PHP Notice: Undefined index: login in /profile.php on line 25 PHP Notice: Undefined variable: myrow2 in /profile.php on line 53" – zavsc Aug 31 '22 at 20:12
  • "Undefined index: login " --- посмотри внимательно на структуру своего массива и на то, как ты обращаешься по ключу....... опять же - используй отладку – Алексей Шиманский Aug 31 '22 at 20:20
  • https://ru.stackoverflow.com/a/1364430/191482 - про undefined index – Алексей Шиманский Aug 31 '22 at 20:21

0 Answers0