Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: условие if для кнопок Вход и Выход
 
 автор: franko   (22.02.2011 в 12:46)   письмо автору
 
 

Необходимо исправить ошибку.
Когда пользователь заходит под своим логиным и рассматривает чужую анкету, слева от анкеты снова выводится таблица ввода в свой аккаунт, т.е. есть кнопка "ВОЙТИ", а нет кнопки "ВЫЙТИ"
<?php
// вся процедура работает на сессиях.
session_start();
include (
"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'];
$result2 mysql_query("SELECT id FROM users 
            WHERE login='
$login' AND password='$password' AND activation='1'",$db); 
$myrow2 mysql_fetch_array($result2); 
//извлекаем нужные данные о пользователе
}
?>


ТАБЛИЦА № 1
//Если страничка принадлежит вошедшему, то предлагаем изменить данные
<?php
if ($myrow['login'] == $login) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные
print <<<HERE
<table>
<tr><td><img src="images/login_picto.gif">Выход</td></tr>

<tr><td>
<FORM name="logout_form" method="POST" action="exit.php">
<input type="submit" value="Выйти">
</FORM>
</td></tr>
</table>
...............
}


ТАБЛИЦА № 2

//если страничка чужая, то возможны два варианта: а и б
А) Пользователь вошел под своим логином или Б) гость рассматривает анкету. Если случай А - то кроме анкетных данных нужно вывести "ВЫЙТИ", если гость то предложить "ВОЙТИ"




if ($myrow2['id'] == $id) {
//Вариант А
<table>
<tr><td><img src="images/login_picto.gif">Выход</td></tr>

<tr><td>
<FORM name="logout_form" method="POST" action="exit.php">
<input type="submit" value="Выйти">
</FORM>
</td></tr>
</table>
}




//Вариант В
print <<<HERE
<table>
<tr><td><img src="images/login_picto.gif">Вход здесь</td></tr>

<tr><td>
<form action="testreg.php" method="post">
<p>Ваш логин:
<input name="login" type="text" size="6" maxlength="15"></p>
HERE;
....
}

  Ответить  
 
 автор: cheops   (22.02.2011 в 12:53)   письмо автору
 
   для: franko   (22.02.2011 в 12:46)
 

Хм... попробуйте реализовать вариант следующим образом
<?php
  
if (!empty($_SESSION['login'])) {
    
// Тут кнопка Выход
  
}
  else {
    
// Тут кнопка Вход
  
}
?>

Тогда каждый момент времени у вас будет отображаться только одна из кнопок в зависимости от того, прошла авторизация или нет.

  Ответить  
 
 автор: franko   (22.02.2011 в 19:51)   письмо автору
 
   для: cheops   (22.02.2011 в 12:53)
 

<?php
if ($myrow2['id'] == $id) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные

echo "..."//выводим таблицу № 1
}

else

{
if (!empty(
$_SESSION['login'])) { 

print <<<HERE
<table><tr><td>Выход</td></tr></table>
HERE;

  } 
  else { 
print <<<HERE
<table><tr><td>ВХОД  здесь</td></tr>
HERE;

  }}


//если страничка чужая, то выводим данные об этом человеке

echo "..."//выводим таблицу № 2

}

?>


тут случай тяжелый. пр условии if ($myrow2['id'] == $id) выводит сразу 2 таблицы: № 1 и № 2
подскажите, где ошибка?

  Ответить  
 
 автор: franko   (22.02.2011 в 19:59)   письмо автору
 
   для: franko   (22.02.2011 в 19:51)
 

вдогонку

<?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'];
$result mysql_query("SELECT * from users WHERE id='$id'"$db);
$myrow mysql_fetch_array($result); 
$result2 mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); 
$myrow2 mysql_fetch_array($result2); 
//извлекаем нужные данные о пользователе
}
?>

  Ответить  
 
 автор: cheops   (22.02.2011 в 20:07)   письмо автору
 
   для: franko   (22.02.2011 в 19:51)
 

А вы сделайте вот так, я так понимаю, Выход нужен всегда, даже когда таблица выводится?
<?php 
if ($myrow2['id'] == $id && !empty($_SESSION['login'])) { 
  
//Если страничка принадлежит вошедшему, то предлагаем изменить данные 
  
echo "..."//выводим таблицу № 1 

print <<<HERE 
<table><tr><td>Выход</td></tr></table
HERE
  } else {  
print <<<
HERE 
<table><tr><td>ВХОД  здесь</td></tr
HERE
  
//если страничка чужая, то выводим данные об этом человеке 
  
echo "..."//выводим таблицу № 2 

?>

  Ответить  
 
 автор: franko   (22.02.2011 в 20:29)   письмо автору
 
   для: cheops   (22.02.2011 в 20:07)
 

А вы сделайте вот так, я так понимаю, Выход нужен всегда, даже когда таблица выводится?

выход нужен только тогда пользователь вошел под своим логином, в другом случае как гость - нужен вход.
поменяется ли в этом случае код?

  Ответить  
 
 автор: cheops   (22.02.2011 в 20:33)   письмо автору
 
   для: franko   (22.02.2011 в 20:29)
 

>поменяется ли в этом случае код?
Нет.

  Ответить  
 
 автор: franko   (22.02.2011 в 20:50)   письмо автору
 
   для: cheops   (22.02.2011 в 20:33)
 

код поменял. теперь когда пользователь вошел под своим логиным и просматривает чужую анкету - вместо ВЫЙТИ - предлагается снова ВОЙТИ

  Ответить  
 
 автор: tvv123456   (22.02.2011 в 20:52)   письмо автору
 
   для: franko   (22.02.2011 в 20:50)
 

> вместо ВЫЙТИ - предлагается снова ВОЙТИ
ну, это что ли проблема? Инртируйте варианты :)

  Ответить  
 
 автор: franko   (22.02.2011 в 20:55)   письмо автору
 
   для: tvv123456   (22.02.2011 в 20:52)
 

эх... кто сможет код целиком посмотреть?

  Ответить  
 
 автор: cheops   (22.02.2011 в 20:59)   письмо автору
 
   для: franko   (22.02.2011 в 20:50)
 

.

  Ответить  
 
 автор: franko   (22.02.2011 в 21:00)   письмо автору
 
   для: cheops   (22.02.2011 в 20:59)
 

точка что означает?

  Ответить  
 
 автор: cheops   (22.02.2011 в 21:03)   письмо автору
 
   для: franko   (22.02.2011 в 21:00)
 

Не до конца понял проблему, написал пост, потом, когда понял, стер пост, оставив точку.

  Ответить  
 
 автор: franko   (22.02.2011 в 21:06)   письмо автору
 
   для: cheops   (22.02.2011 в 21:03)
 

да там надо оставить ВЫХОД и ВХОД в зависимости, пользователь или гость..
а чужую страничку может просматривать и ГОСТЬ, и ПОЛЬЗОВАТЕЛЬ

  Ответить  
 
 автор: cheops   (22.02.2011 в 21:08)   письмо автору
 
   для: franko   (22.02.2011 в 21:06)
 

Это как раз понятно, поэтому здесь лучше привязаться к $_SESSION['login'] - у гостя этого элемента массива быть не может, так как он появляется только у авторизованного пользователя. Попробуйте вариант от cheops (22.02.2011 в 21:02).

  Ответить  
 
 автор: franko   (22.02.2011 в 21:18)   письмо автору
 
   для: cheops   (22.02.2011 в 21:08)
 

Браво!!! Работает. Спасибо

  Ответить  
 
 автор: cheops   (22.02.2011 в 21:02)   письмо автору
 
   для: franko   (22.02.2011 в 20:50)
 

Тогда делайте так
<?php 
// Вход/Выход 
if(!empty($_SESSION['login'])) {
print <<<
HERE  
<table><tr><td>Выход</td></tr></table>  
HERE;  
  } else {   
print <<<
HERE  
<table><tr><td>ВХОД  здесь</td></tr>  
HERE;  
}
// Таблицы
if ($myrow2['id'] == $id) {  
  
//Если страничка принадлежит вошедшему, то предлагаем изменить данные  
  
echo "...";
} else {
  
//если страничка чужая, то выводим данные об этом человеке  
  
echo "...";
}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования