Autor Zpráva
Anonymní
Profil *
Mam nasledovny zaciatocnicky problemik...

robil som si nieco na styl guestbooku... Normalne formular, tam par inputov...
Tu je prvy problem... Chcel som dosiahnut, aby na zaklade nejakych podmienok vyplyvajucich z obsahu v inputoch napisalo rovno na stranku, odkial to bolo odosielane nejaky odkaz... A kedze netusim ako inak by sa to dalo urobit, dal som odosielanie formularu nie na iny subor, ktory by mi co to pozapisoval a povypisoval, ale na tu istu adresu, odkial bol formular odoslany...

Napriklad okrem plno inych mam hodnotu $heslo, ktoru prave teraz napisal uzivatel a hodnotu $prave_heslo, ktoru precitalo zo suboru zaregistrovaneho usera... //a potrebujem, aby mi pri zlom hesle napisalo, ze je zle heslo... Ale na tu istu stranku, odkial to bolo odoslane...

// blablabla nejaky kod ...
<?
$heslo=$HTTP_POST_VARS[heslo];

// blablabla nejaky kod, kt. mi napriklad precita $prave_heslo

if ($heslo != $prave_heslo):
$go = 0;
else:
$go = 1;
endif;

// blablabla este nejake podmienky ...

if ($go == 1):
// blablabla... zapise mi do suboru, co potrebujem...
endif;

if ($go == 0):
echo "Error: Zle heslo";
endif;

//blablabla... co by to malo urobit pri inych $go, inych splnenych podmienkach

// potom dany subor vypisem pomocou fpassthru($subor);

Vsetko by islo v pohode, no premenne zostavaju take, ake boli predtym... To znamena, ze ak da clovek nechtiac refresh, tak mu znovu vypise to iste a bude to tam dva krat... To je ten naj. problem... Kedsom aj na konci suboru dal $heslo=""; po refreshi tam bolo opat to spravne heslo, hoci input s heslom uz bol prazdny...

Tak som rozmyslal a dosiel k finte, ze na konci kodu s $go=1 dam
header ("Location: asd.php"); //pricom cely obsah asd.php je <?header ("Location: form.php"); ?>
//pricom form.php je ten subor, kde sa to vsetko deje...

Tak sa naozaj vsetky premenne zrefreshovali... No hoci vsetko ide ako ma, nechapem preco mi vypisuje cervenym pismom
Warning: Cannot modify header information - headers already sent by (output started blablabla_moja_adresa:128) in blablabla_moja_adresa on line 251

pricom header je v riadku 251 a po jeho odstraneni to uz nepise... //takze problem je naozaj v nom...
zdoraznim, ze VSETKO IDE AKO MA!!! stranka sa naozaj presmeruje na asd.php a odtial spat...

takze tie otazky...
1) dalo by sa to urobit tak, aby som formular odoslal na inu adresu a predsa by mi vypisalo hlasku tam, kde som to odoslal?
2) daju sa tie premenne nejako restartnut tak, aby po refreshi uz boli prazdne?
3) preco mi to pise Error, ked je vsetko v poriadku? Co to vlastne pise? Da sa to nejako zrusit?

No dufam, ze sa to, co som napisal da pochopit aj pre bezneho smrtelnika...
//pripadne sem mozem dat cely kod, keby sa to nedalo pochopit...
Robim totiz s php len par tyzdnov a fakt netusim ako odoslat informacie z jednej stranky do druhej bez formularu s potvrdenim na <input type=submit>... Moj problem vyriesi odpoved na hociktoru z tych troch otazok...
( mozno sa to zda byt kravina... aby som sa takto nadrapoval len preto, lebo by mi to nevypisalo na tu hlavnu stranku, ale pre mna je to dost dolezite... )
mam totiz taky tusak, ze v tom bude len najka easy lamerina... a tiez, ze posielat formular na stranku, odkial bol odoslany je lolovina...

Za odpovede vopred díki... :)
Anonymní
Profil *
A este som zabudol tam hore

// blablabla nejaky kod ... TU JE VLASNTE TEN FORMULAR...
<?
$heslo=$HTTP_POST_VARS[heslo];

::::::::::::::::::::::::::::::::::::::::
a tak dalej, ako som pisal
thingwath
Profil *
Nemůžete poslat header pokud už jste poslal nějaká data. Takže třeba tohle by nemohlo fungovat:


<html>
<head>
...
</head>
<body>
<?
header ('Location: kamsi.php'); //už nelze, musel by být uplně nahoře
?>
Anonymní
Profil *
tak toto som necakal... stacilo fakt malo... miesto header tam dat
echo "<script>document.location.href='asd.php'</script>";

oki, tema moze byt zmazana... :)
Leo
Profil
Jezis a proc presmerovani JavaScriptem? Leo
Anonymní
Profil *
Łeo
Lebo to tak funguje...
alebo mas iny navrh? :)
Leo
Profil
A kdyz bude mit uzivatel vypnuty JavaScript? Leo
Anonymní
Profil *
chodiaci blazon... podla mna dnes je javascript tak pouzivany, ze... to uz je asi jeho chyba... napisem, nech si ho zapne... uz tak tam mam dost vela JS na inych miestach... teda - ja by som sa bez JS nepohol...
Leo
Profil
Komu neni rady, tomu neni pomoci. Leo
Anonymní
Profil *
Tak daj radu...
izsak
Profil
Užívateľ si vypne JS a bude môcť viackrát pridávať príspevky (čítal som to len zbežne, ale tomuto si chcel zabrániť, nie?) a tým pádom si nič nevyriešil. Pripájam sa k Leovi.

Keď užívateľa nakoniec presmerujš na inú page, tak načo mu posielať tony HTML, ktoré aj tak neuvidí???
Daj header() na začiatok PHP súboru.
Yuhů
Profil
Ta rada zní:

v případě, že budeš přesměrovávat, nezapisuj žádné <head> ani body, prostě nic. Pokud je potřeba, tak ulož data a hned uživatele přesměruj přes header(). Nic neEchuj ani nevypisuj.
Leo
Profil
Nejak tak. Kazda dynamicka stranka by mela mit trochu stabni kultury i v tom, co uzivatel nevidi, a urcity logicky postup v kodu. Typicky je to cteni

1. vstupnich hodnot
2. jejich vyhodnoceni (v prvni fazi na nepovolene hodnoty, osetreni pro dotaz do databaze, apod.)
3. prace s databazi (ulozeni dat, apod.)
4. vystup do prohlizece

Samozrejme ze v praxi se to da michat, ale pokud nekde v bodech 1-3 zjistite, ze se nema nic vypsat a misto toho udelat presmerovani tak nedojde nikdy na bod 4. Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0