|
Тема
|
session_register() и register_globals
|
|
Автор | Eмo (Нерегистриран) |
Публикувано | 31.01.07 12:15 |
|
Кротко си чета и образовам, пускам по някой пример, едни тръгват, други не ()като в живота). Заиграх се от няколко дни с един пример от 'динамични уеб форми' на Дан Рансъм (примера е с форма за регистрация) и ми направи впечатление, че в момента в който променя
register_globals на Off
и престава да бачка
http://127.0.0.1/alabala/main.php?Page=somepage
държи се така сякаш
$Page e empty, защото за 'секи случай му написах:
if (empty($Page))
{
$Page = "home";
}
От друга страна в php.ini пише че е най-добре register_globals да е Off от гледна точка на сигурността (You should do your best to write your scripts so that they do not require register_globals to be on . . . ).
Та да попитам, тез дет' му разбират, как мога да направя така, щото 'ем:
register_globals=Off, 'ем http://127.0.0.1/alabala/main.php?Page=somepage да отваря 'somepage'.
За session_register също четох, но резултата е
Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_connect.php:7) in C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_validate.php on line 244
Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_connect.php:7) in C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_validate.php on line 244
Notice: Undefined variable: strWarningOutput in C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_validate.php on line 245
Notice: Undefined variable: strWarningOutput in C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_validate.php on line 246
това което го генерира е метода m_Alert() на класа o_Validate:
function m_Alert($strDelim)
{
$strWarningOut = "";
while (list($intWanVal, $strWarnText) = each($this->p_arrWarnings))
{
$strWarningOutput = $strWarningOututput . $strWarnText . $strDelim . "\r\n";
}
session_register("sessErrors");
$GLOBALS["sessErrors"] = $strWarningOutput;
return $strWarningOutput;
}
и накрая:
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\global\i_connect.php:7) in C:\Program Files\Apache Group\Apache2\htdocs\MembershipForms\a_login.php on line 40
което идва вероятно от следните редове на а_login.php:
if (mysql_num_rows($objResult) != 1)
{
$GLOBALS["sessMemberID"] = $strBadMatch;
header("Location: main.php?Page=login");
}
else
{
session_register("sessMemberID");
$GLOBALS["sessMemberID"] = mysql_result($objResult, "memberID");
}
Ако някой види къде съм се 'увъртял', ще му бъда много благодарен да ме насочи/светне.
Благодаря предварително.
| |
Тема
|
Re: session_register() и register_globals
[re: Eмo]
|
|
Автор | vido (Нерегистриран) |
Публикувано | 31.01.07 13:40 |
|
ползвай $_GET['Page'] вместо $Page
| |
Тема
|
Re: session_register() и register_globals
[re: Eмo]
|
|
Автор |
Blake (член) |
Публикувано | 31.01.07 15:51 |
|
session_register() е малко излишно, работи направо със $_SESSION['variable_name']='bla-bla';
колкото до грешката дето ти я дава на тема сесии - сесията трябва да се стартира преди изпращане на HTTP хедърите, т.е. преди да имаш какъвто и да е аутпут към браузъра (ХТМЛ)
| |
Тема
|
Re: session_register() и register_globals
[re: Blake]
|
|
Автор | Eмo (Нерегистриран) |
Публикувано | 31.01.07 16:55 |
|
Мерсаж за съветите. session_register() е в main.php преди 'всичко', нещо подобно е:
<?php
session_start();
include . . . .
session_destroy();
?>
| |
Тема
|
Re: session_register() и register_globals
[re: vido]
|
|
Автор | Eмo (Нерегистриран) |
Публикувано | 31.01.07 17:04 |
|
Мерси за съвета, така и ще направя, аз съм с PHP 5 (5.1.2), а пък ето хората какво са написали:
Warning
In PHP 4.2.0 and later, the default value for the PHP directive register_globals is off. This is a major change in PHP. Having register_globals off affects the set of predefined variables available in the global scope. For example, to get DOCUMENT_ROOT you'll use $_SERVER['DOCUMENT_ROOT'] instead of $DOCUMENT_ROOT, or $_GET['id'] from the URL http://www.example.com/test.php?id=3 instead of $id, or $_ENV['HOME'] instead of $HOME.
For related information on this change, read the configuration entry for register_globals, the security chapter on Using Register Globals , as well as the PHP 4.1.0 and 4.2.0 Release Announcements.
Using the available PHP Reserved Predefined Variables, like the superglobal arrays, is preferred.
Ама който чете стари книжки кат' мен е така.
| |
Тема
|
Олелелелелелелелеле
[re: Eмo]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 02.02.07 14:21 |
|
session_start();
include . . . .
session_destroy();
За какво ти е тогава сесията ?
Това дето си го направил е голяяяяяяяяма боза. Създаваш сесия в рамките на 1 скрипт и после я унищожаваш. Сесиите имат съвсем друго предназначение наречено условно "Запазване на състоянието"
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
| |
Тема
|
Re: Олелелелелелелелеле
[re: ro6avia]
|
|
Автор | Eмo (Нерегистриран) |
Публикувано | 02.02.07 17:36 |
|
Не ми се смей, сигурно изглежда тъпня, ама толкоз мога. Идеята е следната имам един main.php, който зрежда темплиитите на страниците и подменя някакви маркер-етикети с някакво съдържание.
Тази постановка (session_start() . . . . . session_destroy() в main.php) е дадена като примерен работещ код в една книга, чрез която се опитвам да науча нещо, ама явно съм поел в грешната посока.
Ще почета този уикенд и си запазвам правото за смислен въпрос след това.
Успех.
| |
|
|
|
|