Problém s headerom po prihlaseni – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s headerom po prihlaseni – PHP – Fórum – Programujte.comProblém s headerom po prihlaseni – PHP – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1602 příspěvků
26. 4. 2018   #1
-
0
-

Ahoj, neviem si poradiť s problémom. Mam session, prihlasenie. Prihlásenie je staticke (heslo je v kode). Po prihlasení mam header a celá stránka (prihlasovacia) sa zachová tak, že po prihlásení sa zobrazí zase ona a až refreshi (mnou zadaný/znova klik na submit button formulara) sa mi zobrazí stránka na ktorú sa chcem napojiť...
PHP:
 


  <?php 
   if ($_SESSION['login']===true){
header('LOCATION: ovladanie-rele.php');
  }else{
 
   if(isset($_POST["prihlasit"])) {
     $password = $_POST['password'];
    $password = trim( $password );
    $password = htmlspecialchars( $password, ENT_QUOTES );
     if(($password == "heslo")){
          $_SESSION['login'] = true; 
		  header('LOCATION: ovladanie-rele.php');
        } else{
           echo "<center>Údaje nie sú správne! Pokus opakujte!</center>";
       }
   
    }
  	?>

HTML: 
 

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
  <div class="form-group">
    <input type="password" class="form-control" name="password" placehodler="Heslo">
  </div>
  <button type="submit" class="btn btn-default" name="prihlasit">Prihlásiť</button>
</form>

Neviem, prečo mi to robí.. v kóde mam samozrejme session_start(); hneď za doctype..
Robím niekde nejakú chybu?

Nahlásit jako SPAM
IP: 147.232.177.–
Martin
~ Anonymní uživatel
1602 příspěvků
26. 4. 2018   #2
-
0
-

   

  if ($_SESSION['login']===true){
header('LOCATION: ovladanie-rele.php');
  }

Toto mám iba na overenie, ak je používateľ prihlaseny a spustí prihlasovaciu stránku tak aby nevykreslilo formular a preplo ho na stranku po prihlaseni

Nahlásit jako SPAM
IP: 147.232.177.–
gna
~ Anonymní uživatel
1891 příspěvků
26. 4. 2018   #3
-
0
-

Jakmile začneš vypisovat tělo dokumentu, tak už nejde přidat hlavičky.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
26. 4. 2018   #4
-
0
-

A taky ta hlavička nepřeruší provádění skriptu, takže za tím přesměrováním asi ještě budeš chtít exit.

Nahlásit jako SPAM
IP: 213.211.51.–
Martin
~ Anonymní uživatel
1602 příspěvků
26. 4. 2018   #5
-
0
-

dal som exit(); za ten header a nič sa nezmenilo.

Nahlásit jako SPAM
IP: 147.232.177.–
gna
~ Anonymní uživatel
1891 příspěvků
26. 4. 2018   #6
-
0
-

Napsal jsi, že za doctype máš session_start(). Předpokládám, že to je ještě před tím kódem, co jsi ukázal.

Hlavičky se odesílají před tělem dokumentu. Takže se pokoušíš nastavit hlavičku až potom, co jsi začal odesílat dokument a proto se ta hlavička nepošle a přesměrování neprovede.

Exitem se ukončí skript, takže se neprovede další kód, pokud pod tím ještě něco máš. Na funkčnosti přesměrování to samozřejmě nic nezmění.

Nahlásit jako SPAM
IP: 213.211.51.–
Kit+15
Guru
26. 4. 2018   #7
-
0
-

#1 Martin
Tak nějak od boku bych to udělal index.php asi takhle:

<?php  // první řádek skriptu, před kterým nesmí nic být
session_start();
if (isset($_POST["prihlasit"])) {
    $password = $_POST['password'];
    if(($password !== "heslo")){
        header('Location: index.php');
        exit();   
    }
    $_SESSION['login'] = true;
    header('Location: ovladanie-rele.php');
    exit();   
}
?>
<!DOCTYPE html><form method="post">
    <div class="form-group">
        <input type="password" class="form-control" name="password" placehodler="Heslo">
    </div>
    <button type="submit" class="btn btn-default" name="prihlasit">Prihlásiť</button>
</form>

 Soubor ovladanie-rele.php pak může začinat třeba takto:

<?php
session_start();if ($_SESSION['login'] !== true) {
    header('Location: index.php');
    exit();}
?>
<!DOCTYPE html>....

Ovšem mnohem jednodušší by pro tebe mohla být HTTP autentizace, která vůbec nepotřebuje PHP a přitom jednoduše zabezpečí web.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:f4f1:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Martin
~ Anonymní uživatel
1602 příspěvků
27. 4. 2018   #8
-
0
-

Funguje to! :-) Ale to rozhodovanie som musel dať uplne na uvod stranky.

Nahlásit jako SPAM
IP: 147.232.177.–
gna
~ Anonymní uživatel
1891 příspěvků
27. 4. 2018   #9
-
0
-

#8 Martin
Jaké ale? Přesně to ti tady říká každá odpověd.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Podobná vlákna

Přihlášení — založil petr143

Prihlaseni — založil Misiak

Přihlášení — založil Zelenáč

Přihlášení do administrace — založil jklindera

Jednotné přihlášení — založil Marty_SVK

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý