Непознато warning message

13 отговора 267 прегледа
#1

Непознато warning message

Някой знае ли за какво се отнася по принцип?
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

Става въпрос за този скрипт:

<?php
session_register("view1count");
session_register("view2count");
session_register('view3count');
session_register('view4count');
?>

<?php
//page_count.php
if (isset($_REQUEST['whichpage']))
$whichpage = $_REQUEST['whichpage'];
else
$whichpage = false;

$PHP_SELF=$_SERVER['PHP_SELF'];

for ($i=1; $i<=4; $i++) {
if (isset($_SESSION["view${i}count"]))
${"view${i}count"} = $_SESSION["view${i}count"];
else
${"view${i}count"} = 0;
}

echo "<HTML><HEAD><TITLE>Web Page Hit Counter</TITLE></HEAD><BODY>";

if ($whichpage) {
echo "<B>You are currently on page $whichpage.</B><BR><BR>\n";
$_SESSION["view${whichpage}count"]++;
}

for ($i = 1; $i <= 4; $i++) {
$string = strip_tags (SID);
if ($whichpage == $i) {
echo "<B><A HREF=\"$PHP_SELF?".$string."&whichpage=$i\">Page $i</A></B>";
} else {
echo "<A HREF=\"$PHP_SELF?".$string."&whichpage=$i\">Page $i</A>";
}
echo ", which you have chosen ".$_SESSION["view${i}count"]." times.<BR>\n";
}

echo "\n\n<BR><BR>\n\n";
echo "</BODY></HTML>";

?>

Отговор
в отговор на Dolorian #2

Re: Непознато warning message

Пропуснах да кажа, че използвам php4.3.4/Apache 2.0.48

Отговор
в отговор на Dolorian #3

Re: Непознато warning message

По принцип - махни Апаче 2 и си сложи нещо по-старо, но изпитано и работещо.

Относно твоя код, ето някой забележки:

това тук:
view${i}count

не трябва ли да е:
view{$i}count

Малко по-надолу имаш нещо подобно със същата грешка.

Отговор
в отговор на $burov #4

Re: Непознато warning message

В отговор на:

махни Апаче 2 и си сложи нещо по-старо, но изпитано и работещо.




Кво му има на тва апаче2? Аз го ползвам под линукс и уиндоус и не съм си чупил главата още.

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на Mycлoн #5

Re: Непознато warning message

Никога не съм го ползвал, но честно казано ти си първия който чувам да не се оплаква от Апаче 2 под Windows.

Редактирано от $burov на

Отговор
в отговор на $burov #6

Re: Непознато warning message

абе и аз от месец и половина съм с Apache 2 на Win2000Pro, и засега нямам оплаквания специално от него... иначе си го инсталирах от FoxServ, ама в последствие смених MySQL-a и PHPMyAdmin-a, щото с тях имаше проблем... ама самия Апач си работи екстра...

Just a genius

Отговор
в отговор на $burov #7

Re: Непознато warning message

Проблема със сигурност не е в апача, а в пхп-то. Доколкото си спомням същият скрипт не ми издаваше това съобщение с версия 4.3.3. Претърсих няколко форума, ама и те се чудят за какво става дума. Появява се при използването на сесии, ама при какви условия точно не разбрах. В документацията не открих нищо. Ще пробвам тез дни с петицата да видя какво става.
Относто за заблежката за ${"view${i}count"} си бачка без проблеми, пробвай ако искаш.

Отговор
в отговор на Dolorian #8

Re: Непознато warning message

Що не пробваш просто да направиш това което ти пише в уорнинга:
You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off

----------

Кирилица Forever
Отговор
в отговор на 9-rлaвaтa лaмя #9

Re: Непознато warning message

Ами защото аз търся първо проблема в кода, а след това в компилатора.

Отговор
в отговор на Dolorian #10

Re: Непознато warning message

Тва добре ама аз не разбрах, кода всъщност работи ли? Ако си работи не виждам за какво се тормозиш. То си казва "possibly relies" т.е. аз както го разбирам може и да нямаш никакъв бъг в кода, а пък най-кошмарното нещо което може да се случи на някой е търси несъществуващ бъг

----------

Кирилица Forever
Отговор
в отговор на Dolorian #11

Re: Непознато warning message

ами то си пише за какво става въпрос ...

"PHP versions 4.2.0 and lower have an undocumented feature/bug that allows you to to initialize a session variable in the global scope, albeit register_globals is disabled. PHP 4.3.0 and later will warn you, if this feature is used by enabling both session.bug_compat_42 and session.bug_compat_warn."

т.е. не използвай session_register (вече е deprecated), а $_SESSION

Отговор
в отговор на Dolorian #12

Re: Непознато warning message

@Dolorian:
Problema veroiatno ti idva ot tezi 4 reda
session_register("view1count");
session_register("view2count");
session_register('view3count');
session_register('view4count');

v novite versii na php tova neshto ne se pravi taka triabva da se napishe:
$_SESSION['view1count'] = 'niakakva stoinost'; - analogichno i za ostanalite 3

@$burov:
ne poznavash dobre sintaksisa na php - vzemi procheti malko dokumentacia
$_SESSION["view${i}count"]; e analogichno na $_SESSION["view" . $i . "count"];
a puk ${"view${i}count"} e kato $view#count; kadeto # e suotvetnata stoinost na $i


@Dolorian:
skripta koito izpolzvash e pisan za stara versia na php i ima dupki v nego
preporuchvam ti da go dadesh na niakogo koito da ti go prenapishe

Отговор
в отговор на DEEM #13

Re: Непознато warning message

Прочетох какво пише в документацията по въпроса и съм съгласен с твоята забележка. И въпреки това не мога да разбера как трябва да постъпа, не мога да дам някакви стойности на view.$i.count още в началото, защото скрипта се самоизвиква и става безсмислена употребата на сесиите. Ако исползвам само session_start() при стартирането ми дава, че променливите view.$i.count не са дефинирани. Между другото скрипта си работи направо така както съм го paste-нал, ако не ти е проблем можеш да го прекараш през апача набързо (извинявам се за нахалството).

Отговор
в отговор на Dolorian #14

Re: Непознато warning message

Това последното дето го питах беше тъпо. Считам си проблема за решен и съм благодарен на всички, които отговориха на постинга ми. За сведения, бях пуснал въпроса в някои чуждестранни форуми, посещавани много повече от нашия, но никой не се помръдна. Явно се мърдат само в платените или пък толкоз рабират и те.

Отговор