PHP: "?" ":"

Programovacie jazyky, rady, poradňa...
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

PHP: "?" ":"

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

Mohol by mi niekto vysvetliť, načo slúži niečo takéto ?

Kód: Vybrať všetko

	$password= $_POST['password'] ? md5($_POST['password']) : '';
Mám na to taký názor že :
Pokiaľ do inputu s názvom password nezadáte nič, premenná password nebude obsahovať nič ale ak tam niečo napíšete tak sa do nej uloží zahashovaná verzia toho textu nie ?

Ak sa mýlim tak prosím o vysvetlenie.
A keď už som pri tom hashovaní, je aj nejaká opačná operácia k md5 ?

Nejdem zakladať ďalšiu tému a tak sa ešte pýtam, ako by som mohol overiť, či nejaká premenná obsahuje iba čísla a bodky (že je to IP) ?
Potrebujem rozlíšiť či tam niekto zadá nejaký názov alebo svoju IP.
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: PHP: "?" ":"

Príspevok od používateľa sharky-no »

ano chapes to spravne, je to ekvivalent ku klasickemu if, esle v tvojom pripade

Kód: Vybrať všetko

if($_POST['password'])
$password=md5($_POST['password']);
else
$password="";
 
Inverzna funkcia k md5() nie je, pretoze jej ulohou je sifrovat data tak, aby nemohli byt spatne rozsifrovane. Ano su sposoby ako z md5 hashu ziskat povodny retazec, ale to su uz "cierne" praktiky.

A overit ze ci ide o IP mozes overit cez regularne vyrazy.
prvy odkaz na regex ip z googla

Kód: Vybrať všetko

    $string = "255.255.255.255";
    if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $string)) {
    echo "IP address is good.";
    }
 
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: PHP: "?" ":"

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

(doplním)
Rozdiel operátora ?: a if-else je, že to za otáznikom/dvojbodkou sa vyhodnocuje ako cez funkciu eval. Takže je možné napísať aj $nieco = 1 + ($b ? 1 : 2); a vyhodnotí sa to buď ako 1+1, alebo 1+2.
Ešte by som ten riadok ale opravil na:

Kód: Vybrať všetko

$password= isset($_POST['password']) ? md5($_POST['password']) : '';
reg. výrazy: Na overovanie IP adresy (rovnako tak emailu a iných) existujú štandardy, takže tam treba použiť google.
sorien
Medium Expert
Medium Expert
Príspevky: 88
Registrovaný: 02 jún 2011, 21:55

Re: PHP: "?" ":"

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

sharky-no napísal:ano chapes to spravne, je to ekvivalent ku klasickemu if, esle v tvojom pripade
Inverzna funkcia k md5() nie je, pretoze jej ulohou je sifrovat data tak, aby nemohli byt spatne rozsifrovane. Ano su sposoby ako z md5 hashu ziskat povodny retazec, ale to su uz "cierne" praktiky.
iba doplnim, existuju free hashovacie tabulky kde su ulozene vsetky kombinacie do velkosti <6-12 znakov volaju sa rainbow tables napriklad

Kód: Vybrať všetko

http://www.freerainbowtables.com/en/tableprogress/
rusi su natom este lepsie, preto ku vsetkym heslam je najlepsie pridat salt napr:

Kód: Vybrať všetko

  $salt = "some_long_random_string";
  $password = md5($password);
  return md5($salt.$password);
alebo spravit viacnasobny hash

Kód: Vybrať všetko

  return = md5(md5($password));
atd.
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: PHP: "?" ":"

Príspevok od používateľa sharky-no »

viacnasobny hash ti nepomoze aj keby to 50000krat zahasujes, stale sa to podla tabuliek bude dat desifrovat keby niekto chce. ale to je uz OT.
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

Re: PHP: "?" ":"

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

super.. s týmto ste mi pomohli veľmi dobre ..

ešte sa teda spýtam..
v databáze mám stĺpčeky "created" , "expired" a "days"
created označuje, kedy sa vykonal nejaký príkaz
expired označuje, kedy vyprší
days označuje ako dlho bude existovať

príklad :

Kód: Vybrať všetko

created
1304539286
expired
1926619286
days
7200
Mňa zaujíma :
Akým spôsobom sú zapisované tie data (d.m.r - deň mesiac rok (to je príklad)) a ako by som to mohol do DB zapisovať..
Napríklad, mal by som input s nejakým textom, input s nejakým číslom vyjadrujúcim počet dní a odošlem submitom. Teraz sa do DB uloží obsah toho inputu, dátum/čas kedy som ho pridal (created), automaticky sa vyráta na základe zadaného počtu dní kedy vyprší (expired) a uloží aj samotný počet dní (days)

Dúfam že ma niekto pochopil :/
Ďakujem !
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: PHP: "?" ":"

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

Akým spôsobom sú zapisované tie data (d.m.r - deň mesiac rok (to je príklad)) a ako by som to mohol do DB zapisovať..
Napríklad, mal by som input s nejakým textom, input s nejakým číslom vyjadrujúcim počet dní a odošlem submitom. Teraz sa do DB uloží obsah toho inputu, dátum/čas kedy som ho pridal (created), automaticky sa vyráta na základe zadaného počtu dní kedy vyprší (expired) a uloží aj samotný počet dní (days)
To co tam mas ulozene je tzv Unix time. V skratke je to pocet sekund, ktore uplynuli od 1.1.1970. Ked chces teda vyratat expired, skratka k created priratas pocet_dni*24*60*60, tj pocet sekund, kolko tie dni trvaju. S datum v PHP pracuju funkcie time(); a date();
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

Re: PHP: "?" ":"

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

moc nechápem :D
mohol by si mi dať nejaký príklad ?
dajme tomu že :

Kód: Vybrať všetko

// toto skus napisat
$created = 
$expired = 
// ak
$days = 30
a created by mohol byť 13.6.2011 17:00
a skús aj nejaké bližšie vysvetlenie k výpočtu
ĎAKUJEM PEKNE !!
sorien
Medium Expert
Medium Expert
Príspevky: 88
Registrovaný: 02 jún 2011, 21:55

Re: PHP: "?" ":"

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

sharky-no napísal:viacnasobny hash ti nepomoze aj keby to 50000krat zahasujes, stale sa to podla tabuliek bude dat desifrovat keby niekto chce. ale to je uz OT.
az nato ze md5 ma 32 znakov 2^128 ich sucasna rychlost je okolo 2 x 10^12/sek => nikto z nas sa toho nedozije ;)
Napísať odpoveď