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

Форум PHP

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

 

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

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

тема: Проблема с $PHP_SELF (register_globals = Off и register_globals = On)
 
 автор: jurij_83   (06.04.2006 в 09:42)   письмо автору
 
 

У меня сделана такая форма:

<form method=\"post\" action=\"$PHP_SELF\">

<input type=\"text\" name=\"username\"></p>

<input type=\"password\" name=\"password\"></p>

</form>

На localhost она работает (у меня в компе) - видимо, потому что register_globals = On.
Помещаю на сервер, где проверил и register_globals = Off. Не работает...

В этом ли причина и как её устранить? Помогите. Спасибо.

   
 
 автор: Loki   (06.04.2006 в 10:20)   письмо автору
 
   для: jurij_83   (06.04.2006 в 09:42)
 

Попробуйте так:

<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">

   
 
 автор: jurij_83   (06.04.2006 в 10:33)   письмо автору
 
   для: Loki   (06.04.2006 в 10:20)
 

Это не помогло...

   
 
 автор: jurij_83   (06.04.2006 в 10:36)   письмо автору
 
   для: Loki   (06.04.2006 в 10:20)
 

Чтобы было понятнее, приведу весь код.

<?

session_start();

if ($op == "ds") {

//форма заполнен, проверка правильности ввода

if (($username != "admin") || ($password != "abc123")) {
//нужно показать форму с сообщением об ошибке
$msg = "<P><font color=\"#FF0000\"><strong>Не верно введены имя пользователи или пароль! Попробуйте еще раз! </strong></font></p>";
$show_form = "yes";
} else {
session_register('valid');
$valid = "yes";
$show_menu = "yes";
}

} else {

if ($valid == "yes") {
$show_menu = "yes";
} else {
$show_form = "yes";
}
}

$form_block = "

<h1>Проверка прав пользователя </h1>

<form method=post action=\"$PHP_SELF\">

$msg

<P><strong>Имя пользователя: </strong><br>
<input type=\"text\" name=\"username\" size=15 maxlength=25></p>

<P><strong>Пароль: </strong><br>
<input type=\"password\" name=\"password\" size=15 maxlength=25></p>

<input type=\"hidden\" name=\"op\" value=\"ds\">
<br>

<P><input type=\"submit\" name=\"submit\" value=\"ОК\"></p>

</FORM>

";

$menu_block = "

<h1>Система управления контактами </h1>

<P><strong>Администрирование </strong>
<ul>
<li><a href=\"show_addcontact.php\">Добавить контакт </a>
<li><a href=\"pick_modcontact.php\">Изменить контакт </a>
<li><a href=\"pick_delcontact.php\">Удалить контакт </a>
</ul>

<P><strong>Просмотр записей </strong>
<ul>
<li><a href=\"show_contactsbyname.php\">Отобразить контакты в алфавитном порядке по имени </a>
</ul>

";

if ($show_form == "yes") {
$display_block = $form_block;
} else if ($show_menu == "yes") {
$display_block = $menu_block;
}

?>

<HTML>
<HEAD>
<TITLE>Система управления контактами </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

</HEAD>

<BODY>

<? echo "$display_block"; ?>

</BODY>
</HTML>


Нужно, чтобы работало. Если register_globals = On - то работает. А если register_globals = Off. Не работает...
Жду помощи.

   
 
 автор: Loki   (06.04.2006 в 11:51)   письмо автору
 
   для: jurij_83   (06.04.2006 в 10:36)
 

Ну так понянтое дело...
При register_globals on надо $username, $password и $op заменить на $_POST['username'], $_POST['password'] и $_POST['op']

   
 
 автор: jurij_83   (06.04.2006 в 14:20)   письмо автору
 
   для: Loki   (06.04.2006 в 11:51)
 

Сделал я теперь вот так, но не работает.

Посмотрите, где ещё что не так?


<?

session_start();

if ($op == "ds") {

//форма заполнен, проверка правильности ввода

if (($_POST['username'] != "admin") || ($_POST['password'] != "abc123")) {
//нужно показать форму с сообщением об ошибке
$msg = "<P><font color=\"#FF0000\"><strong>Не верно введены имя пользователи или пароль! Попробуйте еще раз! </strong></font></p>";
$show_form = "yes";
} else {
session_register('valid');
$valid = "yes";
$show_menu = "yes";
}

} else {

if ($valid == "yes") {
$show_menu = "yes";
} else {
$show_form = "yes";
}
}

$form_block = "

<h1>Проверка прав пользователя </h1>

<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">

$msg

<P><strong>Имя пользователя: </strong><br>
<input type=\"text\" name=\"username\" size=15 maxlength=25></p>

<P><strong>Пароль: </strong><br>
<input type=\"password\" name=\"password\" size=15 maxlength=25></p>

<input type=\"hidden\" name=\"op\" value=\"ds\">
<br>

<P><input type=\"submit\" name=\"submit\" value=\"ОК\"></p>

</FORM>

";

$menu_block = "

<h1>Система управления контактами </h1>

<P><strong>Администрирование </strong>
<ul>
<li><a href=\"show_addcontact.php\">Добавить контакт </a>
<li><a href=\"pick_modcontact.php\">Изменить контакт </a>
<li><a href=\"pick_delcontact.php\">Удалить контакт </a>
</ul>

<P><strong>Просмотр записей </strong>
<ul>
<li><a href=\"show_contactsbyname.php\">Отобразить контакты в алфавитном порядке по имени </a>
</ul>

";

if ($show_form == "yes") {
$display_block = $form_block;
} else if ($show_menu == "yes") {
$display_block = $menu_block;
}

?>

<HTML>
<HEAD>
<TITLE>Система управления контактами </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

</HEAD>

<BODY>

<? echo "$display_block"; ?>

</BODY>
</HTML>

   
 
 автор: Loki   (06.04.2006 в 15:11)   письмо автору
 
   для: jurij_83   (06.04.2006 в 14:20)
 

if ($op == "ds") не поменяли

   
 
 автор: jurij_83   (06.04.2006 в 15:31)   письмо автору
 
   для: Loki   (06.04.2006 в 15:11)
 

Да теперь заработало. Но пишет ошибку (после того, как ввёл логин и пароль):


Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


Код теперь такой:

<?

session_start();

if ($_POST['op'] == "ds") {

//форма заполнен, проверка правильности ввода

if (($_POST['username'] != "admin") || ($_POST['password'] != "abc123")) {
//нужно показать форму с сообщением об ошибке
$msg = "<P><font color=\"#FF0000\"><strong>Не верно введены имя пользователи или пароль! Попробуйте еще раз! </strong></font></p>";
$show_form = "yes";
} else {
session_register('valid');
$valid = "yes";
$show_menu = "yes";
}

} else {

if ($valid == "yes") {
$show_menu = "yes";
} else {
$show_form = "yes";
}
}

$form_block = "

<h1>Проверка прав пользователя </h1>

<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">

$msg

<P><strong>Имя пользователя: </strong><br>
<input type=\"text\" name=\"username\" size=15 maxlength=25></p>

<P><strong>Пароль: </strong><br>
<input type=\"password\" name=\"password\" size=15 maxlength=25></p>

<input type=\"hidden\" name=\"op\" value=\"ds\">
<br>

<P><input type=\"submit\" name=\"submit\" value=\"ОК\"></p>

</FORM>

";

$menu_block = "

<h1>Система управления контактами </h1>

<P><strong>Администрирование </strong>
<ul>
<li><a href=\"show_addcontact.php\">Добавить контакт </a>
<li><a href=\"pick_modcontact.php\">Изменить контакт </a>
<li><a href=\"pick_delcontact.php\">Удалить контакт </a>
</ul>

<P><strong>Просмотр записей </strong>
<ul>
<li><a href=\"show_contactsbyname.php\">Отобразить контакты в алфавитном порядке по имени </a>
</ul>

";

if ($show_form == "yes") {
$display_block = $form_block;
} else if ($show_menu == "yes") {
$display_block = $menu_block;
}

?>

<HTML>
<HEAD>
<TITLE>Система управления контактами </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

</HEAD>

<BODY>

<? echo "$display_block"; ?>

</BODY>
</HTML>

   
 
 автор: Trianon   (06.04.2006 в 15:40)   письмо автору
 
   для: jurij_83   (06.04.2006 в 15:31)
 

session_register('имя_сессионной_переменной'); теперь не пишут.

Такие вещи как
session_register('valid');
$valid = "yes";
.....
if ($valid == "yes") { 

надо писать так:
$_SESSION['valid'] = "yes";
.....
if ($_SESSION['valid'] == "yes") { 

   
Rambler's Top100
вверх

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