PHP header

Pozdravljeni !

Sedaj ne vem ali se na tem forumu lahko tudi kaksno tako vpršanje postavi , vendar ker potrebujem pomoč se obračam z rahlo težavo na vas.

Kot ste opazili imam tezave z funkcijo header , torej zanima me če poznate rešitev
oz če obstaja kaka proti funkcija ki nadomešča header mi lahko tudi sporočite.

Sedaj pojdimo k moji težavi.

Imam obrazec za login . prijava vse normalno deluje v primeru da uporabnik napiše
nepravilno mu napiše da je napaka in da poskusi ponovno napisati uporabnisko ime
in geslo . V kolikor pa pravilno napieš pa ne spusti čes funkcijo header.

Koda: header('Location: index1.php');

Torej me le zanima kje bi se lahko skrivala napaka preiskusil sem veliko zadev vendar mi nikoli ne deluje funkcija header.

Le v primeru da uporabim le samostojno funkcijo header

Koda:
<?php
header('Location: index1.php');
?>

Le v tem primeru deluje ,ko pa uporabljam v povezavi z php pa mi funkcija ne deluje.

Celotna koda:
$errorMessage = '';
if (isset($POST['txtUserId']) && isset($POST['txtPassword'])) {
// check if the username and password combination is correct
if ($POST['txtUserId'] === 'david' && $POST['txtPassword'] === 'david123') {
// the username and password match,
// set the session
$SESSION['basicisloggedin'] = true;

    // after login we move to the main page
    header('Location: index1.php');
    exit;
} else {
    $errorMessage = 'Napaka, wrong username / password';
}

}
?>

<?php
if ($errorMessage != '') {
?>

Torej kaj bi bilo narobe .No skoraj pozabil da bo clanek popolen.

NAPAKA:
Warning: Cannot modify header information - headers already sent by (output started at /home/lion/domains/elektronski-lev.si/publichtml/zaposleni/prijava.php:11) in /home/lion/domains/elektronski-lev.si/publichtml/zaposleni/prijava.php on line 67

Vrstica 67
header('Location: index1.php');

Torej če kateri ve kaj je narobe v tej sila enostavni php kodi.

Lep pozdrav in hvala za vso pomoč.

8 odgovorov

Samo nasvet ... Čeprav je tukaj nekaj brihtnih <?php buč, boš verjetno hitreje dobil odgovor na PHP vprašanja na forumu http://php-si.com/ .

Pa srečno s headerji.

Kopriva hvala za nasvet za objavo na php forumu.

Vendar se za ta forum velikokrat vprašam ali je to mrtu forum ali
pa na forumu delujeta le 2 temi . Srečo imam da ravno o php -ju :)

ellev, preberi si dokumentacijo funkcije header(), pa boš dobil odgovor na svoje vprašanje.

Govorim predvsem o naslednjem besedilu:

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.

Sem rešil zadevo !

Za vse ce boste naletel na tak primer je potrebno narediti tole.
Na začetek je potrebno napisati tole.
sessionstart(); - ni potrebna ce ne uporabljate seesion
ob
start();

Na koncu pa izpišete :
<?php obendflush(); ?>

In še za vse tiste ki ne veste kaj je bila težava kratka obrazlozitev.
Heder se vedno naloži le enkrat .Nikoli se ne more večkrat če nimate v kodi
zgoraj navedenega. Ko pa v kodo vpišete potrebno se lahko večkrat izvaja funkcija heder in vam omogoča skoke iz enega fajle v druzga.

Vini hvala za to stran.
Sam ta stran je moj drugi dom vendar tega glede heder pa nisem našel.

13

V bistvu si dal fantom povsem napačen nasvet :) Tale tvoj način je obliž za to, če zadeve tako zabluziš, da drugače ne gre. Če bi ločil logiko od prezentacije, se ti take zadeve tako ali tako ne bi dogajale :P

4

ellev.... fora je v tem, da ti "spletna stran" ne sme ničesar izpisovati pred fukncijo header()... a šteka? -> header() must be called before any actual output is sent

1

No, pa še razčlenitev tvoje obrazložitve:

"Heder se vedno naloži le enkrat." - Tale izjava nima nobenega smisla. Verjetno si mislil, da lahko header() funkcijo pokličeš le enkrat, če si, se motiš. Funkcijo header() lahko kličeš poljubno mnogokrat, brez bojazni, da bi se ti zgodilo to, kar se je tebi, če le prej nisi outputal vsebine.

"Nikoli se ne more večkrat če nimate v kodi zgoraj navedenega." - Verjetno razloženo že zgoraj, kajne?

"Ko pa v kodo vpišete potrebno se lahko večkrat izvaja funkcija heder in vam omogoča skoke iz enega fajle v druzga." - Kot skoki med fajli si verjetno predstavljaš statemente include ali require, ja? To nima prav nobene veze s funkcijo header(), pred klicem te funkcije lahko poljubno mnogokrat izvedeš include ali require, če le nisi znotraj teh fajlov outputal vsebine.

Ja?

1

Če uporabiš header za avtentikacijo moraš paziti, da nimaš kakšnega presledka v kodi, ker sledi error.