Problem s globální proměnou – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s globální proměnou – PHP – Fórum – Programujte.comProblem s globální proměnou – PHP – Fórum – Programujte.com

 

ellke
~ Anonymní uživatel
29 příspěvků
8. 11. 2014   #1
-
0
-

Zdravím všechny :)

Mám menší problém, který nemůžu vyřešit. (V xampu běží vše bez problému)

Mám index.php

<p><center><i><h2>Přihlášení do administrace</h2></i></center></p>
 
<fieldset><center><i><h3>
<form name="prihlaseni" action="login1.php"  method="post"> 
 
 <table border="0" cellpadding="6" cellspacing="0" width="190">
<col align="left" width="20">
<col align="center">
<col align="right">
<tr><td> Jméno</td> <td>	<input type="text"    name="jmeno" />		</td> 
<tr><td> Heslo</td><td>		<input type="password" name="heslo" /> 						</td> 
</table>

<input type="submit" value = "přihlásit" />

 </h3></i></form></center></fieldset>

login je admin a heslo admins

login1.php


<?php
session_start();
$_SESSION['jmeno'] = $_POST["jmeno"];
$_SESSION['heslo'] = $_POST["heslo"];


if ($_SESSION['jmeno']=="admin" && $_SESSION['heslo']=="admins")
{

$_SESSION['bezpecnost']= "1";   //ochrana pred zvláštní návštěvou
echo"<meta http-equiv='refresh' content='1;url=login2.php'>";


}
else
{
echo"<meta http-equiv='refresh' content='1;url=index.php'>";
}


?>

Tady pokud budu mít heslo a jméno v pořádku dostanu do globální proměnné "1".

login2.php

  <head>
	        <title>Administrace</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="styly.css">

    </head>


<?php
session_start();




if ($_SESSION['bezpecnost']==1)
{
echo "<center><h1>Vítejte admine</h1></center>";

echo "hlavní nabídka";



}
else
{
echo"<meta http-equiv='refresh' content='1;url=index.php'>";
}

?>

A zde mě to vždycky přesměruje zpět na index.php

Mám to nahrané na doméně Wedos.

Problém asi bude v té globální proměnné.

Může byt problém, že globální proměnná není podporována?

Děkuji předem za pomoc

Nahlásit jako SPAM
IP: 2a00:1028:83d8:53f6:6da7:...–
Kit+15
Guru
8. 11. 2014   #2
-
0
-

#1 ellke
Globální proměnné budou podporovány, ale překáží tam řádky obsahující slovo "refresh". Místo toho použij 

<?php
header('Location: login2.php');
exit;
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
ellke
~ Anonymní uživatel
29 příspěvků
8. 11. 2014   #3
-
0
-

Napsal jsem tohle :  

<?php
session_start();

if ($_SESSION["bezpecnost"]==1)
{
echo "<center><h1>Vítejte admine</h1></center>";


echo "Hlavní stranka";


}
else
{
header('Location: index.php');
exit;
}


?>

teď mi to vypisuje chybu :

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/2883/virtual/www/subdom/ruda/login2.php:2) in /data/web/virtuals/2883/virtual/www/subdom/ruda/login2.php on line 16

a na 16 line je napsaný header.

Nahlásit jako SPAM
IP: 2a00:1028:83d8:53f6:6da7:...–
Kit+15
Guru
8. 11. 2014   #4
-
0
-

#3 ellke
Asi jsi už poslal na výstup nějaký text - před voláním funkce header() to nelze. Asi tam budeš mít nějaké HTML, které tam nepatří.

header() máš na 15. řádku.

Je to typická chyba začátečníků.

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

Já jsem prosil o radu. 

No nic zajdu si někam jinam děkuji za pomoc

Nahlásit jako SPAM
IP: 2a00:1028:83d8:53f6:6da7:...–
Kit+15
Guru
8. 11. 2014   #6
-
0
-

#5 ellke
Však jsi radu dostal. Vyhoď všechno HTML před voláním funkce header(). Stejně by se nic z toho nezobrazilo, dáváš to tam zbytečně.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
10. 11. 2014   #7
-
0
-

Asi ti nic lepsiho neporadi.
Je to klasicka php chyba. Jakykoliv text pred <?php vytvori hlavicku, odesle ze serveru a tudiz dalsi zmena hlavicky neni dovolena. Ten text muze byt mezera, novy radek nabo utf-8 boom znak nebo php echo.
Zkus si udelat echo pred session_start, uvidis, ze se chybova hlaska posune na session_start.
Muzes zkusit pouzit ob_start. A nebo si ukladej text do promennych a vypis az na zaver php kodu.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:e815:98...–
Xena
~ Anonymní uživatel
7 příspěvků
19. 11. 2014   #8
-
0
-

Ti dám lepší radu. :D 

V login2.php máš session_start() po html textu, což má za následek to, že session v login2 nefunguje, proto podmínka: 

if ($_SESSION['bezpecnost']==1) { echo "<center><h1>Vítejte admine</h1></center>"; echo "hlavní nabídka"; }

nemůže nikdy nastat, protoze ten soubor na session[bezpecnost] nevidí, i když na serveru existuje. Proto, zkuš ten fake head 

<head> <title>Administrace</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" rel="nofollow" href="styly.css"> </head>

v login2.php a vlož session_start na 2. řádek souboru (po <?php samozřejmě ) 

Nahlásit jako SPAM
IP: 89.103.183.–
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, 9 hostů

 

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