PHP - if

Programovacie jazyky, rady, poradňa...
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

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

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:
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

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

bezpečnejšie je asi prejsť každého užívateľa a porovnať poslané údaje s údajmi v db..
takéto vyrábky sú dobré známe a hockto ti obíde celý zložitý systém takouto malou prihlasovacou chybyčkou ,)
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 »

Teraz vas nechapem. O aku chybu ide? Na tej stranke, na ktorej pracujem zase nie je az tak dolezita bezpecnost. Ale aby som pri inych projektoch vedel, o co ide.

K tomu header(): Neda sa miesto toho pouzit nejaky iny html tag podobny <a href>, ktory automaticky prepne na inu stranku? Existuju napr. stranky, ktore automaticky po nejakom case prepnu na inu stranu. Alebo to je javascript?
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

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

da sa pouzit nejaky meta tag. uz to tu na fore bolo takze nepisem to znova.
a v com bola chyba v tom skripte? no select do databazy bol opvlyvneny tym co zadal uzivatel. takze ak zadal to co som napisal, tak select vratil vsetkych prihlasenych uzivatelov a tym obisiel prihlasovaci skript. taka blbost, da sa to jednoducho opravit....
add to nosferatu: nie je dobre prejst vsetkych uzivatelov, je to neefektivne. mozme predpokladat, ze uzivatelske meno je unikatne. takze vyberieme len heslo podla mena a porovname. alebo sa na to da pouzit hash. zahashujes vstup a tak urobis select.
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 »

Akym sposobom sa da poslat premenna napr. $prem do inej stranky? (napr. cez formular) Ake su este sposoby?
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

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

premenu mozes poslat cez url, post, session, cookie. z formulara len get a post.
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 »

mastermind napísal:premenu mozes poslat cez url, post, session, cookie. z formulara len get a post.
OK, dakujem. :wink:
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 »

mastermind napísal:premenu mozes poslat cez url, post, session, cookie. z formulara len get a post.
A mohol by si mi prosim ta napisat nejaky jednoduchy skriptik? Cize ak mam v stranke prva.php ulozenu premennu $cislo a potrebujem ju dostat do stranky druha.php. Co ma byt ulozene v prva.php a druha.php? Je to jedno, ked je prechod z prva.php do druha.php cez <a href> alebo location()?
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

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

premennú cez get pošleš jednoducho..

Kód: Vybrať všetko

<?
//prva.php
$cislo="123";
echo ("<a href=\"druha.php/?cislo=".$cislo."\" target=\"_parent\">Prepni</a>
?>

Kód: Vybrať všetko

<?
//druha.php
if(!empty($_GET["cislo"]))
 {
  $cislo=$_GET["cislo"]
  echo $cislo;
 }
?>
..niekedy je dobré keď niečo posielaš cez get zakódovať, stačí base64 abo niečo podobné aby sa ti to nedoondilo..
premennú cez post rovnako, sic trochu inak..

Kód: Vybrať všetko

<?
//prva.php
$cislo="123";
?>
<form method="post" action="druha.php">
 <input  type="hidden" name="cislo" value="<? echo $cislo;?>">
 <input type="submit" value="Prepni">
</form>
<?
?>

Kód: Vybrať všetko

<?
//druha.php
if(!empty($_POST["cislo"]))
 {
  $cislo=$_POST["cislo"]
  echo $cislo;
 }
?>
ak si cel niečo iné, tak sry :roll:
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 »

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?
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>';
Napísať odpoveď