Včera funkční skript dnes nefunguje

Nevím jak je to možné ale v Utery sem si dělal script php na přihlášení normálně šel super ale dneska ve Středu nejde bud mi hlava blbne a nebo blbne wz.cz ale sázel bych na wz.cz protože sem na tom scriptu nic nedělal od te doby.
<HTML>Co to znamená "nejde"? Jak vypadá ten skript?
P.S.: příště zkus vymyslet vhodnější název tématu než že se stránka zbláznila.</HTML>
Abych řekl už jsem přišel co je příčina ale udivuje mě že to včera šlo.Ale mám tu ukázku kódu:


<?php

include('coonect.php');
$check = mysql_query("SELECT * FROM adminstrace WHERE id='$HTTP_COOKIE_VARS[id]' LIMIT 1;");
$user = mysql_fetch_array($check);
$login = $user[login];
$level = $user[levels];
if($HTTP_COOKIE_VARS[login] == $login){

?><div class="H3">Admin menu:</div>
</div>
<div class="text"> <div class="spodnik">
<?php
if(admin==$level) {
include('adminmenu.php');
}
else {}
?>
<?php
if(operator==$level) {
include('operatorsmenu.php');
}
else {}
?>
<?php
if(user==$level) {
include('usermenu.php');
}
else {}
?>

</div>
</div>
<?
}else{
?>
<div class="H3">Přihlášení:</div>
</div>
<div class="text"> <div class="spodnik">
<form action="login.php" method="post" enctype="multipart/form-data">
Login:<br />
<input name="login" type="text" class="podpis1" size="10" />
<br>
Password:<br />
<input name="passwd" type="password" class="podpis1" size="10">
<br />
<input type="submit" name="do_login" value="Login!" />
</form><a href="registrace.php">registrace</a></div>
</div>
<?
}
?>
Nepoužívej slovo "NEJDE". Je to bezobsažné a nikdo ti tak nepomůže. Napiš, JAK se projevuje, že to nefunguje: co to dělá, co to nedělá, chybové hlášky. Pak máš naději na rozumnou odpověď.

V kódu máš samé includy, takže to nikdo nevyzkouší.

Alespoň drobná rada. Za každý příkaz začínající mysql_ přidej or die (mysql_error()):

Příklad:
mysql_fetch_array($check) or die (mysql_error())

Aspoň budeš vědet, jak ti chodí SQL dotazy - teda pokud je problém tam.


Co znamená tato podmínka? if(admin==$level)

PS. Opravdu se ten includovaný skript jmenuje "coonect.php". Věštím z křišťálové koule.
Omlouvám se že to blbě říkám to nefunguje tak budu říkat zvláštnost je to script který z cokies ověří jestli jsem přihlášen a jméno + ID který je v cokies si ověří z databázi ,v souboru coonect.php je jen heslo databáze a tak ale když mám stránku a dam tam script tak to neukazuje formulař když sem odhlášen a když se přihlásím přes jiný soubor a dam to tak tam je normálně menu <?php
if(admin==$level) {
include('adminmenu.php');
}
else {}
?> tohlen sto je mechanismus který z databáze ověří jestli su admin nebo operátor nebo user a pak to vypíše menu co je v adminmenu.php ale to jde ale neukazuje to formulář.
viz ZBI, bud konkretni, v podstate to po nm opisi, snad se zlobit nebude...

1. mne take napdis " Včera funkční skript dnes nefunguje" nic nerika a premyslel jsem jestli to otevrit a mit tu trpelivost pozadat te o konkretni udaje nebo se vykaslat...

2. SQL dotazy 100% s die() a nejlepe s vypsanim dotazu, at vis, jak vypada
$dotaz = "INSERT INTO $tab ($data1) VALUES ($data2)";
mysql_query($dotaz) or die("<hr>Err: $dotaz<hr>".mysql_error());

3. PHP error reporting nic?
error_reporting(E_ALL); //hlasenie chyb = on, zakomentovat!
To by ti treba odhalilo chybne includy, jak zminil ZBI
include('coonect.php');
jestli to nemelo byt spise:
include('connect.php');

4. [3] by to vyresilo...
if(admin==$level) {
if(operator==$level) {
if(user==$level) {
Jestli ono to nemelo byt spise s dolarem? To mi netvrd, ze ti vcera fungobvalo bezchybne?
if ($admin==$level) {
if ($operator==$level) {
if ($user==$level) {

=ZBI= "Co znamená tato podmínka? if(admin==$level)" to je porovnavani s konstantou, kterou samozrejme nemuzes vedet, jestli ma definovanou, kdyz nevidis, co je v "coonect.php');" . Treba ji tam ma definovanou. Ale pravdepodobnejsi je, ze mu schazi $ :)))

5.
$HTTP_COOKIE_VARS[login]
$HTTP_COOKIE_VARS["login"]
opet pokus o praci s konstantou login, ktera neexistuje a pravdepodobne to [2] bude hlasit.

6.
<?php
if(admin==$level) {
include('adminmenu.php');
}
else {}
?>
<?php
if(operator==$level) {
include('operatorsmenu.php');
}
else {}
?>
<?php
if(user==$level) {
include('usermenu.php');
}
else {}
?>

NEBO

<?php
if ($admin==$level) {include('adminmenu.php');}
elseif ($operator==$level) {include('operatorsmenu.php');}
elseif ($user==$level) {include('usermenu.php');}
else {}
?>

NEBO

<?php
switch ($level) {
case $admin : include('adminmenu.php'); break;
case $operator : include('operatormenu.php'); break;
case $user : include('usermenu.php'); break;
}
?>

7. Mozna by bylo dobre dat odkaz na kod typu xxx.php -> xxx.txt cili zkopirovat do souboru s priponou txt. Totez se vsemi includy

8. jinak teda includy pojmenovavam xxx.inc.php (aby bylo jasne, ze je to include a ne funkcni kod)
<HTML>>> 2. SQL dotazy 100% s die() a nejlepe s vypsanim dotazu, at vis, jak vypada


Proc by si mel kvuli napr. nefunkcni ankete zrusit cely web?
Die se snad pouziva jen tam, kde jde o zasadni vec a je treba script ukoncit.


>> 3. PHP error reporting nic?
>> error_reporting(E_ALL); //hlasenie chyb = on, zakomentovat!
>> To by ti treba odhalilo chybne includy, jak zminil ZBI


Sam o chybach nevis nic tak nemluv, na WZ je nastaveno 2039, include je kod 2 (warning) a samozrejme se zobrazuje. Ty akorat tak pomuzes lidem k tomu, aby se jim na webu vypisoval notice.
Do vlastnich scriptu si davej E_ALL jak chces, ale nerad to prosim ostatnim.

</HTML>
1) $check = mysql_query("SELECT * FROM adminstrace WHERE id='$HTTP_COOKIE_VARS[id]' LIMIT 1;");
Pole se dava mimo retezec. To jest:
$check = mysql_query("SELECT * FROM adminstrace WHERE id='". $HTTP_COOKIE_VARS[id] ."' LIMIT 1;");

2) $user[login]; $user[levels];
Nevim ze by to fungovalo. Indexy jsou retezove, tudiz musi byt zauvozovkovany (to je slovo :) ). To jest $user['login'];

3) if(admin==$level) {
Co je admin? Zda-li je to konstanta, tak OK. Jinak je to chybne. Predpokladam, ze je to retezec, tak to dej do uvozovek. Pokud to ma byt promenna, tak pridej $.
To plati i u ostatnich.

4) Na kazdou podminku <?>? No budiz. Je to dobre, ale neprehledne.

5) $HTTP_COOKIE_VARS[login] je dnes uz zastarale a dlouhe. Staci jen $_COOKIE['login'].

Divim se ze ti to jde, pac podle kodu by ti to nemelo vubec jit.
= Richard (moderátor) =
error_reporting(E_ALL);
Ja to samozrejme ve vsech programech mam. Pokud skoncim praci, tak to zakomentuji.

die()
To je samozrejme jeho vec, jak a jestli to pouzije. mi osobne prijde lepsi zrusit cely web a zobrazit chybu nez ne. Kazdopadne lze na zaver prace zakomentovat.

Kde vidis problem? Nebo mas neco proti mne? Protoze DIE mu napsal i ZBI prede mnou a na nej nereagujes. Citim zde negativni vlny...
Peta. Richard reagoval na tento argument "SQL dotazy 100% s die()". A ja s nim zasadne souhlasim. Proc bych mel vsude davat die()? Prece nebudu kvuli jedne ankete rusit cely web. Die se pouziva jen tam, kde by chyba zasadne ovlivnila chod cele stranky. Jinak staci chybu jen potlacit a nekam zaznamenat, pripadne zobrazit.
Kdybych to delal jen podle tebe a daval vsude die, tak by mi pri vypadku mysql, nebo chybe, nesel cely web a to jenom kvuli pocitadla. Proto pocitadlo pracuje skryte bez vlivu na stranku. Nejde pocitadlo, nevadi. Stranka jede dal.

PS: Vypada to tak, ze zde citis negativni vlivy, pac zasahujes nebo odpovidas i tam, kde nemas. Nebo odpovidas nestandardne. Proste pro nas zasvecene jsi tu nejak na obtiz. Klidne si tu zustan a dal pomahej tim svym zpusobem. Ja te nikam nevyhazuji. Ale radeji si jeste jednou precti otazku a pak jeste odpoved, nez to sem odesles.