Autor Zpráva
TomasSSS
Profil *
Zdravim,

mam problem, ktery melo spoustu uzivatelu a je zde o nem spousta temat, presto mi ani jedno nepomohlo. Jedna se problem s presmerovanim pres header().

Mam kod na prihlasovani uzivatelu, session je uplne nahore, pak je html formular pro prihlaseni:
<form function="functions/login.php"> ... <form>

a v souboru login.php je samotna funkce pro prihlaseni, tzn. kontrola zadanych dat a nasledne ulozeni do session asi takto:
if ($verify == 1) {
...
zde je ulozeni do session
...
header("Location: ../index.php");
} else ...

Na localhostu vse probehlo v poradku, prihlaseni uspesne. Po presunuti na hosting nastal problem s headerem "Cannot modify header information - headers already sent".

Chybu chapu, nechapu, jak ji vyresit
1. Jak prepsat kod tak, aby bylo presmerovani pomoci header na zacatku? Aktualne je na konci souboru functions/login.php a sam formular je uprostred stranky.
2. Nebo mam vyuzit jine presmerovani (existuje jine?)
3. Funkce ob_start() z nejakeho duvodu nefungovala a opravdu jsem se snazil, aby tomu tak bylo (mozna je to nastavenim hostingu - testoval jsem to na wedos.cz)

Prosim o co nejjednodussi reseni a pripadne odkazy na zdroje k nastudovani..

Diky moc a preji hezky vecer vsem
Someone
Profil
<?php
    if (isset($_POST['prihlasit'])) {
        // ověření uživatele
        Header("Location: index.php");
    }
?>
<html>
    <body>
        <form method="POST">
        <!--
              Input pro vyplnění
         -->
        </form>
    </body>
</html>

PHP script musí být jednoduše před jakýmkoliv výstupem. Já to většioun dělám tak, že si před začátek dokumentu ještě před <!DOCTYPE html> includnu php soubor ve kterém mám všechny ty PHP scripty. něco jako:
<?php
   include("engine.php");
?>
<!DOCTYPE html>
....

v souboru engine.php může být např. to tvoje přihlašování.
TomasSSS
Profil *
To chapu, ovsem kdyz kod s loginem pridam na zacatek pomoci include, tak se provede ihned = odesle se s prazdnymi polozkami. Puvodne jsem to mel tak, ze byl vlozen jako <form action="login.php">, takze se odeslal az po kliknuti na submit..

Jak vyresit tento problem, ktery vznikne az resenim problemu minuleho?

Diky
Tori
Profil
TomasSSS:
kdyz kod s loginem pridam na zacatek pomoci include, tak se provede ihned = odesle se s prazdnymi polozkami
Zpracování dat z formuláře (+přesměrování) by se mělo provádět jen pokud byl formulář vyplněný a odeslaný. Máte to tak? Často se používá podmínka if ($_POST) nebo if ($_POST["název-odesílacího-tlačítka"] (vlastně ve [#2] to tak je).

"Odešle se s prázdnými položkami" a "původně to byl <form> ale už není" - jak se to teda samo odesílá?
TomasSSS
Profil *
Uz to chapu, diky moc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: