Autor Zpráva
tomkat
Profil *
Část obsahu stránky clanek.php mám zabezpečenou heslem;
<form method="post" >
					<input name="heslo" type="password" >
					<input type="submit" value="Zobrazit">
					</form>
					<?
					$heslo =$_POST['heslo'];
					if ($heslo=="tajneheslo") { ;
					?>
<a href="clanek.php?text=neco1">článek1</a>
<br>
<a href="clanek.php?text=neco2">článek2</a>
.
.
.
<?php
}
?>

Po zadání hesla se mě odtajní ty odkazy, ale po kliknutí na některý z nich to chce zadat heslo znova, teprve pak zobrazí daný článek. Existuje nějaké řešení, abych tam ty hesla nemusel psat dvakrát?
nightfish
Profil
Existuje nějaké řešení, abych tam ty hesla nemusel psat dvakrát?
ano, třeba uložit do session
SwimX
Profil
tomkat
jde ti o to "tajneheslo" s kterým porovnáváš odeslané proměnné?
Stačí si nadefinovat konstantu:
define ("HESLO", "tajneheslo");
a pak už jenom if($heslo == HESLO){}
tomkat
Profil *
SwimX: Mohl by si mi to define ukázat na nějkém příkladu abych to líp pochopil? Jsem v PHP začátečník. Dík
SwimX
Profil
tomkat
http://cz2.php.net/define
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.

define("GREETING", "Hello you.", true);
echo GREETING; // outputs "Hello you."
echo Greeting; // outputs "Hello you."

?>
tomkat
Profil *
Pochopil sem teda že to heslo musí být ve tvaru:
<?php
$heslo =$_POST['heslo'];
define ("HESLO", "tajneheslo"); 
if ($heslo == HESLO) {} ;
?>
Nicméně se to chová stejně jako před tím, vždy když pomocí odkazu zavolám třeba
clanek.php?text=neco1
tak se ta stránka načte zvonu včetně hesla :-(
SwimX
Profil
tomkat
jo takle.. Tak to se omlouvám já.Myslel sem že nechceš psát to tajneheslo.
Tak to potom přes SESSIONy.
<?
session_start(); // todle musí být uplně na začátku (ped jakýmkoli jiným výstupem z php)
if (!isset($_SESSION['on']) && $heslo == HESLO)
{$_SESSION['on'] = true;}
elseif ($_SESSION['on'] == true;){


cela stranka


}
?>
tomkat
Profil *
Díky moc! už to valí jak má
tomkat
Profil *
Beru to zpět. Nejede to! Text, co se má zobrazit po zadání hesla se zobrazuje už před zadáním. Tady kousek kodu:
<form method="post" >
<input name="heslo" type="password" >
<input type="submit" value="Zobrazit">
</form>
<?
session_start(); 
if (!isset($_SESSION['on']) && $heslo == snn)
{$_SESSION['on'] = true;}
elseif ($_SESSION['on'] == true)
{ ;
?>					
nějaký text	
<?php				
} 
?>
SwimX
Profil
tomkat
[#7]„session_start(); // todle musí být uplně na začátku (ped jakýmkoli jiným výstupem z php)
<? session_start(); ?>
<form method="post" >
<input name="heslo" type="password" >
<input type="submit" value="Zobrazit">
</form>
<?
if (!isset($_SESSION['on']) && $heslo == snn) // pokud je to řetězec tak patří do uvozovek " "
{$_SESSION['on'] = true;}
elseif ($_SESSION['on'] == true)
{ ; - vyhodit
?>                    
nějaký text    
<?php                
} 
?>
tomkat
Profil *
Asi to není možné, ale chová se to uplně stejně jako před tím, nějaký text je zobrazen ještě před zadáním hesla
AM_
Profil
jen drobná technická, vyvaruj se short_open_tagů (<?), všude používej <?php. Některé servery už (poměrně odůvodněně) ani short_open_tag nepodporují, protože <? nezačíná jen php kód a tak se to pak tluče např. s XML. Na tomhle hostingu ti to třeba funguje, na jiném nebude.
tomkat
Profil *
Tak už sem to rozchodil. Jen ještě dotaz: Kam do kodu vložit to vstupní pole, aby po zadání hesla a odtajnění textu toto pole zmizelo?
SwimX
Profil
tomkat
můžeš udělat podmínky
pokud neexistuje promenná SESSION on || nebo je false tak echo input type pasword
else ->
tomkat
Profil *
SwimX
Tak podmínka už jede, jen ještě malá drobnost a to, proč tam to heslo musím zadávat 2x ? Respktive poprvé to musí být heslo a podruhé už můžu zadat cokoli, ale musím to potvrdit 2x

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: