Autor | Zpráva | ||
---|---|---|---|
tomkat Profil * |
#1 · Zasláno: 8. 2. 2009, 16:08:24
Čá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 |
#2 · Zasláno: 8. 2. 2009, 16:10:26
„Existuje nějaké řešení, abych tam ty hesla nemusel psat dvakrát?“
ano, třeba uložit do session |
||
SwimX Profil |
#3 · Zasláno: 8. 2. 2009, 16:16:44
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 * |
#4 · Zasláno: 8. 2. 2009, 16:30:20
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 |
#5 · Zasláno: 8. 2. 2009, 16:34:18
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 * |
#6 · Zasláno: 8. 2. 2009, 17:23:38
Pochopil sem teda že to heslo musí být ve tvaru:
<?php $heslo =$_POST['heslo']; define ("HESLO", "tajneheslo"); if ($heslo == HESLO) {} ; ?> clanek.php?text=neco1 |
||
SwimX Profil |
#7 · Zasláno: 8. 2. 2009, 17:42:04
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 * |
#8 · Zasláno: 8. 2. 2009, 18:29:42
Díky moc! už to valí jak má
|
||
tomkat Profil * |
#9 · Zasláno: 8. 2. 2009, 19:50:26
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 |
#10 · Zasláno: 8. 2. 2009, 19:55:07
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 * |
#11 · Zasláno: 8. 2. 2009, 20:45:04
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 |
#12 · Zasláno: 8. 2. 2009, 21:03:26
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 * |
#13 · Zasláno: 8. 2. 2009, 22:08:59
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 |
#14 · Zasláno: 9. 2. 2009, 23:24:36
tomkat
můžeš udělat podmínky pokud neexistuje promenná SESSION on || nebo je false tak echo input type pasword else -> |
||
tomkat Profil * |
#15 · Zasláno: 10. 2. 2009, 16:00:22
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 |
||
Časová prodleva: 15 let
|
0