PHP - if

Programovacie jazyky, rady, poradňa...
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

mastermind napísal:to gwixt: nie ze by bol ten tvoj skript zly to nie, ale co ked niekto do pass zada nieco taketo

Kód: Vybrať všetko

blbost' or 'x'='x
skript vrati cislo ktore je rovne poctu uzivatelov, to je rozne od nuly a teda sa dostane na stranku aj bez toho aby vedel meno a heslo. :wink:
mastermind dik za upozornenie .... ale cez moje prihlasovacie formulare sa takto nedostanes .... ja totiz hesla hashujem :wink:

ale dobre vediet ze aj takato blbost staci :)
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

ppt napísal:Moze byt aj to, diky. Ale neexistuje este nieco, aby tie premenne zostali v pamati dlhsie? Napr. az do vypnutia stranky? To session je co?

Kód: Vybrať všetko

  //prva.php

session_start();

$_SESSION['cislo'] = 123;


//ak chces mat istotu, ze to bude fungovat, 
//aj ked bude mat uzivatel na prehliadaci vypnute cookies
echo '<a href="druha.php?'.session_name().'='.session_id().'">prepni</a>'; 

// session_id sa v tomto pripade prenasa iba v cookies
echo '<a href="druha.php">prepni</a>'; 

Kód: Vybrať všetko

 //druha.php

session_start();

if( isSet($_SESSION['cislo']) )
  echo $_SESSION['cislo'];
else
  echo "nieco sa posralo!";
//edit: vsetko najdes na webe
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

IqiPoP: diky. To session zostane v pamati aj dlhsie? Alebo ked chcem poslat tu istu premennu aj do tretej stranky (napr z druha.php do tretia.php), tak musim vsetko zopakovat :?:
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

Príspevok od používateľa Nosferatu »

session je viazané na užívateľa, zostane tam dokým sa neodpojí, nevyprší časový limit, alebo dokým ty nepovieš že tam nemá byť..
môžeš použiť aj cookies napr..
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

Nosferatu napísal:session je viazané na užívateľa, zostane tam dokým sa neodpojí, nevyprší časový limit, alebo dokým ty nepovieš že tam nemá byť..
môžeš použiť aj cookies napr..
Tak potom by mal existovat nejaky prikaz na vymazanie session, nie?
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

ppt napísal:IqiPoP: diky. To session zostane v pamati aj dlhsie? Alebo ked chcem poslat tu istu premennu aj do tretej stranky (napr z druha.php do tretia.php), tak musim vsetko zopakovat :?:
defaultne na serveroch je expiracia session nastavena na 24 minut po poslednom requeste. skratit alebo predlzit defaultne nastaveny cas expiracie je problem, pretoze garbage collection nefunguje tak ako ma.

ku session:
ak sa rozhodnes, ze uzivatelia prezerajuci si tvoju stranku musia na to mat povolene cookies, tak staci na zaciatku kazdej stranky (prva.php, druha.php, tretia.php, ...) napisat session_start(), co nainicializuje podla cookies z hlavicky requestu, tvoju ulozenu session do superglobalnej premennej $_SESSION.
v opacnom pripade linky musia obsahovat session_name() s hodnotou session_id()
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

ppt napísal:Tak potom by mal existovat nejaky prikaz na vymazanie session, nie?
session_destroy();
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

Príspevok od používateľa Nosferatu »

hej, hej.. tuna to máš po česky:

Kód: Vybrať všetko

http://pabi3.com/article76/php-pre-zaciatocnikov-sessions-15diel/
originál php dokumentácia:

Kód: Vybrať všetko

http://sk.php.net/manual/sk/ref.session.php
tu je niečo o jej možnosti zneužitia, možno už zaplátané, čo ja viem :? :

Kód: Vybrať všetko

http://blackhole.sk/node/280

Kód: Vybrať všetko

session_destroy(); - // Zruší celú session, napr. keď sa user odhlasuje
sessions:

Kód: Vybrať všetko

Pro práci se session jsou v php tyto funkce:

	- session_start(); - Inicializuje session 

	- session_destroy(); - Zruší session

	- session_register(Jmeno); - Zaregistruje session proměnnou

	- session_unregister(Jmeno); - Zruší session proměnnou. (Pokud potřebujeme jednu promměnou zrušit a ostatní ponechat)

	- session_unset(); - Zruší všechny session proměnné, ale ponechá session iniciované, oproti session_destroy();

	- session_id(); - Vypíše řetězec, který bude předáván v URL pro session
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

OK, diky chlapici, idem to skusit...
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

IgiPop: nestaci namiesto session_name() pouzit v linku PHPSESSID???

Kód: Vybrať všetko

echo '<a href="druha.php?PHPSESSID='.session_id().'">prepni</a>';
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

gwixt napísal:IgiPop: nestaci namiesto session_name() pouzit v linku PHPSESSID???

Kód: Vybrať všetko

echo '<a href="druha.php?PHPSESSID='.session_id().'">prepni</a>';
a ty vies presne povedat na tom ktorom hostingu, ako je pomenovana session_name v konfiguraku php.ini? taktiez, mne sa nepaci pomenovanie "PHPSESSID" a mozem si ho zmenit

Kód: Vybrať všetko

session_name("MySID");
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

nie je PHPSESSID defaultne nastavene??? mne to takto fungovalo zatial uplne vsade
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

Ak vyzera skript napr. takto:
prva.php:
<?
session_start();
$_SESSION['cislo'] = 123;
?>
<form method="post" action="druha.php">
//nieco
<input type="Submit" name="odosli" value="odosli">
</form>
Tak potom mi to bude na stranke druha.php fungovat? Myslim to session. (ak je cookies povolene)
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

ppt napísal:Tak potom mi to bude na stranke druha.php fungovat? Myslim to session. (ak je cookies povolene)
ano ... preco by nefungovalo
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

gwixt napísal:ano ... preco by nefungovalo
Lebo nie som nijaky expert v php :lol:
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

gwixt napísal:nie je PHPSESSID defaultne nastavene??? mne to takto fungovalo zatial uplne vsade
to je pravda, ze je tak defaultne nastavena, ale co ak hrabne adminovi a pri konfiguracii to zmeni.
nikdy sa nespoliehaj na defaultne nastavenia, nahodou ich admin zmeni, a ty budes mat zbytocne s tym robotu.
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

No ja sa trapim, cudujem sa, ze mi to nejde, a nakoniec som prisiel na to, ze SESSION sa musi pisat s velkymi pismenami... :oops: ale uz to ide. 8)
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

Mam vybratu cast tabulky z mysql takto:
<?
mysql_connect("localhost");
$result = mysql("tab","select * from users where login like $log ");
?>
A ja chcem vediet premennu id u uzivatela $log, ktora je v tej istej tabulke tak mam dat aky prikaz? Vypisuje mi chybu, ked pouzivam toto:
$id=mysql_result($result,0,"id");
echo $id
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

ppt napísal:A ja chcem vediet premennu id u uzivatela $log, ktora je v tej istej tabulke tak mam dat aky prikaz? Vypisuje mi chybu, ked pouzivam toto:
ked uz mas result tak skus toto

Kód: Vybrať všetko

 $row=mysql_fetch_array($result,MYSQL_BOTH);
 echo $row["id"];
IgiPop napísal:to je pravda, ze je tak defaultne nastavena, ale co ak hrabne adminovi a pri konfiguracii to zmeni.
nikdy sa nespoliehaj na defaultne nastavenia, nahodou ich admin zmeni, a ty budes mat zbytocne s tym robotu.
njn dik za info
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

qwixt: Vypisuje mi pri tom chybu:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/8/site26068/wwwroot/main/banner.php on line 7
Napísať odpoveď