Autor Zpráva
Vouty
Profil
Zdravím
Narazil jsem na nějaké značky a nějak nechápu jejich význam v kódu.
třeba @

if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){
    echo "<h1>Tato stránka je jen pro registrované</h1>";
    
}
Když tento kód na nějakou stránku a nebudete přihlášení, vypíše vám to "Tato stránka je jen pro registrované"... ale proč je před $_SESSION zavináč?
jaký má význám?

dalším takovým znakem je vykřičník !

děkuji za odpověď
Amunak
Profil
@ potlačuje chyby, nedoporušuji používat. V tomto případě to nejspíš mělo potlačit chybu ohledně neinicializovaných session nebo tak něco, ale ani nevím, jestli by to fungovalo, a je hloupost to používat, protože pak vám kód nefunguje a nevíte proč. Chybová hlášení jsou největší přítel programátora.

! je výraz značící negaci, tedy z výrazu, který se vyhodnotí jako true, udělá vykříčník false. Např:
if(!isset($promenna)) echo '$promenna neni inicializovana';

Další znaky na které můžete narazit je třeba && a ||, což je logické AND (resp. OR).
Joker
Profil
Vouty:
proč je před $_SESSION zavináč?
Chtělo by se říct: Protože autor pořádně nevěděl, co dělá.

Ta podmínka česky říká „Pokud hodnota $_SESSION['prihlasen'] není nastavena a zároveň je různá od 1“.
Takže ta druhá část je úplně zbytečná, jelikož proměnná nemůže zároveň nemít hodnotu a mít hodnotu 1.

Ohlevně významu jak píše Amunak, @ potlačuje chybové hlášky a neměl by se používat a ! je negace.
Vouty
Profil
&& a || používám :)

2
3
4if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){
    echo "<h1>Tato stránka je jen pro registrované</h1>";
    
}


tohle mi normálně funguje ;)
tiso
Profil
Vouty: „tohle mi normálně funguje ;)
To je síce pekné, ale keď ideš do obchodu pre chleba, tiež si ho nedáš do igelitky, ruksaku a kufra, stačí ti igelitka.
Vouty
Profil
máte lepší řešení?
Joker
Profil
Vouty:
máte lepší řešení?
if (!isset($_SESSION['prihlasen'])) {
    echo "<h1>Tato stránka je jen pro registrované</h1>";
}
bude fungovat úplně stejně.
Virtus
Profil
Za předpokladu, že v $_SESSION['prihlasen'] se může vyskytnout i jiná hodnota než 1, by ta podmínka měla vypadat takto:
if( ( !isset( $_SESSION['prihlasen'] ) ) || ( isset( $_SESSION['prihlasen'] ) && ( $_SESSION['prihlasen'] != 1 ) ) )
Someone
Profil
Virtus:
Pokud by (ne)přihlášení záviselo na hodnotě v proměnné prihlasen tak stačí
if(isset($_SESSION['prihlasen']) && $_SESSION['prihlasen'] == 1) {
// přihlášen
} else {
// nepřihlášen
}
Amunak
Profil
Co se týče problematiky přihlašování, tak stačí mít jednu session ve které je třeba uživatelské jméno (které nejspíš stejně bude potřeba na každé stránce i vypisovat) a když nikdo není přihlášen, tak mít tuto session nenastavenou. Stačí to pak kontrolovat jediným isset (viz. [#7]) a máte zároveň k dispozici vždy i uživatelské jméno.

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: