Notice: Use of undefined constant

4uva4ok

Писатель
Регистрация
3 Авг 2011
Сообщения
0
Реакции
0
Проверьте правильность написания кода и еще из-за чего эта ошибка:ah:
Notice: Use of undefined constant login - assumed 'login'on line 49
Зарание спасибо

PHP:
<?php
session_start();
 
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_GET['id'])) {$id = $_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
 
//проверяем логин и пароль в сессиях через базу данных, получаем id пользователя
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
}
 
//получаем всю информацию по id
$result = mysql_query("SELECT * FROM users WHERE id= '$id'",$db);
$myrow = mysql_fetch_array($result);
if(!$myrow) exit("Пользователя не существует! Возможно он был удален.");
 
// Считаем количество ответов
$query = "SELECT * FROM messages WHERE poluchatel='$myrow[login]' AND  hide=1 ";
$new = mysql_query($query);
if(!$new) exit ("Ошибка");
$num_rows = mysql_num_rows($new);
 
// Считаем количество вопросов
$query2 = "SELECT * FROM messages WHERE poluchatel='$myrow[login]' AND hide=0 ";           
$new2 = mysql_query($query2);
if(!$new2) exit ("Ошибка");   
$num_rows2 = mysql_num_rows($new2);
 
 
   
//Если страничка принадлежит вошедшему, то выводим личные данные   
if ($myrow[login] == $login)  {
 
print <<<HERE
 
<!DOCTYPE html>...
 
if ($myrow[login] == $login) -> if ($myrow['login'] == $login)

т.е. возьми в кавычки ['login'], php считает это константой, это не ошибка, это нотис, с ним можно жить, но лучше без него)
 
а по написанию кода, я просто новичок))

Исправил, не помогло :( - в этой строчке ему что то не нравится(((
 
Какая ошибка? точно такая же или другая? или выкладывай весь скрипт или пиши ошибки...
 
Notice: Undefined variable: login in C:\HomServ\home\second\page.php on line 45

Уже голову сломал, когда входишь, то все нормально, а так выдает предупреждение...
PHP:
<?php
error_reporting(E_ALL);
session_start();
 
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_GET['id'])) {$id = $_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
 
//проверяем логин и пароль в сессиях через базу данных, получаем id пользователя
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
if(!$myrow2) exit ("Ошибка");
}
 
//получаем всю информацию по id
$result = mysql_query("SELECT * FROM users WHERE id= '$id'",$db);
$myrow = mysql_fetch_array($result);
if(!$myrow) exit("Пользователя не существует! Возможно он был удален.");
 
// Считаем количество ответов
$query = "SELECT * FROM messages WHERE poluchatel='$myrow[login]' AND  hide=1 ";
$new = mysql_query($query);
if(!$new) exit ("Ошибка");
$num_rows = mysql_num_rows($new);
 
// Считаем количество вопросов
$query2 = "SELECT * FROM messages WHERE poluchatel='$myrow[login]' AND hide=0 ";         
$new2 = mysql_query($query2);
if(!$new2) exit ("Ошибка"); 
$num_rows2 = mysql_num_rows($new2);
 
 
 
//Если страничка принадлежит вошедшему, то выводим личные данные 
if ($myrow['login'] == $login)  {
 
print <<<HERE
 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Вход</title>
<link rel="stylesheet" href="../assets/css/styles.css" /> 
 
</head>
<body>
<div id="menu" class="menu-top">
      <div id="menuCenter">
 
        <a href="/account/wall">
          <div id="logo"></div>
        </a>
 
        <a href="/exit.php" class="link-menu">Выход</a>
        <a href="/setting/$id" class="link-menu">Установки</a>
          <a href="/all_users.php" class="link-menu">Поиск</a>
          <a href="/account/people" class="link-menu">Друзья</a>
          <a href="/page/$id" class="link-menu-active">Профиль</a>
          <a href="/mess/" class="link-menu">Вопросы ($num_rows2)</a>
          <a href="/account/wall" class="link-menu">Главная</a>
       
      </div>
    </div> 
 
 
<div id="main_index">
<img width ="300px" alt='аватар' with src=/$myrow[avatar]'><br>
<form action='/post.php' method='post'>
 
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
</div>
 
 
<div id="main_index">
HERE;
//Выводим вопросы с ответами
echo "Ответов: $num_rows <br><br>";
  if(mysql_num_rows($new) > 0)
  {
    while($messages = mysql_fetch_array($new))
    {
      // Выводим вопрос
      echo "<b>".$messages['text']."</b> - ";
      // Выводим ответ
      echo "<b>".$messages['answer']."</b><br><br>";
    }
  }
else{
echo "Вопросов больше нет";
}
 
print <<<HERE
</div>
<footer>
<h2>© 2012</h2>
</footer>
</body>
</html>
HERE;
 
}
 
else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
 
print <<<HERE
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Вход</title>
<link rel="stylesheet" href="../assets/css/styles.css" /> 
</head>
<body>
 
<div id="menu" class="menu-top">
      <div id="menuCenter">
 
        <a href="/account/wall">
          <div id="logo"></div>
        </a>
<a href="/index.php" class="link-menu">Вход</a>
<a href="/reg.php" class="link-menu">Регистрация</a>
       
      </div>
    </div> 
 
 
 
 
<div id="main_index">
<img width ="300px" alt='аватар' with src='http://second/$myrow[avatar]'><br>
<form action='/post.php' method='post'>
 
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
</div>
<div id="main_index">
HERE;
//Выводим вопросы с ответами
echo "Ответов: $num_rows <br><br>";
  if(mysql_num_rows($new) > 0)
  {
    while($messages = mysql_fetch_array($new))
    {
      // Выводим вопрос
      echo "<b>".$messages['text']."</b> - ";
      // Выводим ответ
      echo "<b>".$messages['answer']."</b><br><br>";
    }
  }
else{
echo "Вопросов больше нет";
}
 
print <<<HERE
</div>
<footer>
<h2>© 2012</h2>
</footer>
 
</body>
</html>
 
HERE;
}
 
?>
 
4uva4ok, очевидно, что $login может быть не определен (не сработало условие)
PHP:
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
но скрипт продолжает свою работу и обращается к неопределенной переменной.
PHP:
if ($myrow['login'] == $login)
 
Спасибо всем, получилось, но через жопу)):(alko:
 
На последок могу посоветовать пользоваться такой записью для проверки переменных

PHP:
$id = (!empty($_GET['id'])) ? $_GET['id'] : '';

Это даст гарантию для инициализации переменной
 
Notice: Undefined variable: login in C:\HomServ\home\second\page.php on line 45

Уже голову сломал, когда входишь, то все нормально, а так выдает предупреждение...

Что мешает в первых строках файла инициализировать переменную?
PHP:
$login = '';
 
На последок могу посоветовать пользоваться такой записью для проверки переменных

PHP:
$id = (!empty($_GET['id'])) ? $_GET['id'] : '';

Это даст гарантию для инициализации переменной

Вот только не 100% гарантию

Для просмотра ссылки Войди или Зарегистрируйся

Следующие значения воспринимаются как пустые:
  • "" (пустая строка)
  • 0 (целое число)
  • 0.0 (дробное число)
  • "0" (строка)
...

isset может быть лучше для этих целей
 
Назад
Сверху