Autor | Zpráva | ||
---|---|---|---|
Skreaver Profil * |
#1 · Zasláno: 27. 8. 2011, 21:42:02
Zdravím Vás,
chcel by som sa opýtať,či je možne vykonať prihlásenie v php pomocou vytvoreného súboru. Tak je, že si vytvorím súbor kde budem mať IP adresy ako login a heslo, ktoré im zadám ja a následne pri prihlasovaní sa budu porovnávať IP a heslo. Ak je to možne, tak ako.Bol by som vďačný za každú radu. ďakujem. |
||
Joker Profil |
#2 · Zasláno: 27. 8. 2011, 21:47:11
Možné to samozřejmě je. Zhruba tou metodou nastíněnou v dotazu.
Taky by šlo mít všechny uživatele uložené v jednom souboru, třeba v XML, případně CSV a podobně. Možností je spousta. |
||
Skreaver Profil * |
#3 · Zasláno: 27. 8. 2011, 21:51:10
Joker:
Hmm, ďakujem. A vedeli by ste mi priblížiť ako na to ? poprípade napísať zdroják v skratke? |
||
Joker Profil |
#4 · Zasláno: 27. 8. 2011, 21:56:18
Skreaver:
„A vedeli by ste mi priblížiť ako na to ?“ Ano, když řeknete jak si to asi představujete a s čím je problém. |
||
Skreaver Profil * |
#5 · Zasláno: 27. 8. 2011, 22:06:45
Joker:
Tak spravím klasický formulár pre prihlásenie. Avšak stále nechápem, ako po zadaní loginu a hesla dokážem porovnať danú ip adresu a heslo ku nej zadané. Teda ako mám hľadať podľa príkazov v danom súbore ,či už xml alebo csv. |
||
Joker Profil |
#6 · Zasláno: 27. 8. 2011, 22:28:07
Skreaver:
„nechápem, ako po zadaní loginu a hesla dokážem porovnať danú ip adresu a heslo ku nej zadané“ Typicky by se asi sekvenčně procházely záznamy až by se našel uživatel daného jména a pak by se porovnalo heslo a IP. Případně lepší XML parser by uměl najít záznam k danému jménu podle XPath dotazu. Když dám příklad, dejme tomu XML: <uzivatele> <uzivatel jmeno="pepa"> <heslo>955db0b81ef1989b4a4dfeae8061a9a6</heslo> <ip>1.2.3.4</ip> </uzivatel> <!-- další uživatelé --> </uzivatele> pepa;955db0b81ef1989b4a4dfeae8061a9a6;1.2.3.4 1. Načte se XML 2. Procházejí se značky <uzivatel> 3. Pokud atribut jmeno = danému uživateli, porovná se, zda IP == obsah značky <ip> a v tomhle případě md5(heslo) == obsah značky heslo 4. Pokud ano, uživatel je autorizován Ukázka, jak se v PHP dá pracovat s XML: SimpleXML Pro CSV: 1. K načtení csv se dá použít fgetcsv 2. Ve vráceném poli se projdou řádky až se najde ten, kde první položka odpovídá jménu uživatele 3. Zkontrolují se ostatní položky |
||
Skreaver Profil * |
Joker:
Dakujem veľmi pekne. Idem niečo poskúšať. Prajem zatiaľ pekný večer. taak už som niečo urobil,len teraz nevime ako mam prehľadávať samotný súbor. V podstate kroky 2 a 3. |
||
o_O Profil |
#8 · Zasláno: 28. 8. 2011, 02:17:45 · Upravil/a: o_O
Na načtení souboru existují funkce fopen() (pro starší verze PHP, 4 a méně), nebo file_get_contents() (pro PHP5), na procházení polí pak for() a foreach().
|
||
Joker Profil |
#9 · Zasláno: 28. 8. 2011, 09:26:13
Skreaver:
Pokud jde o ty formáty co jsem popsal, tak v odkazech jsou příklady |
||
Skreaver Profil * |
foreach ($xml->uzivatelia->uzivatel as $uzivatel) { echo $uzivatel->ip; } co ja na tomto zápise zle? Invalid argument supplied for foreach() in /3w/xf.cz/s/skreaver/skuska.php on line 10 malo by mi to vypísať IP adresy uzivatelov nie? hmm,dal som to bez toho uzivatelia na zaciatku a uz to funguje : ) Dobrý deň, tak nejak som to všetko zbúchal,samozrejme za vašej pomoci. Len ešte jedna chybička krásy. Môj súbor vyzerá napr. takto: <uzivatelia> <uzivatel > <ip>127.6.2.1</ip> <heslo> 123</heslo> </uzivatel> <uzivatel> <ip>127.6.2.8</ip> <heslo> 1234</heslo> </uzivatel> <uzivatel> <ip>127.6.2.17</ip> <heslo> 12345</heslo> </uzivatel> </uzivatelia> A zdrojový kod takto: <?php $login = $_POST['login']; $heslo= $_POST['heslo']; if ($login && $heslo) { $xml = simplexml_load_file("uzivatelia.xml"); foreach ($xml->uzivatel as $uzivatel ) { if ($login == $uzivatel->ip & $heslo == $uzivatel->heslo ) { echo "zadali ste správne heslo"; } elseif ($login != $uzivatel->ip || $heslo != $uzivatel->heslo) { echo "Zadané údaje sú nesprávne, prosím skontrolujte IP adresu alebo heslo"; } } } elseif (($login && $heslo) == false){ echo "Nezadali ste udaje"; } ?> a problém je v tom,že ak zadám zlé heslo,alebo ip ,tak mi hlásku "zadali ste nespravne......." vypise tolko krat,kolko mám uzivatelov v subore. ako mam urobit aby len raz ? |
||
Tori Profil |
#11 · Zasláno: 28. 8. 2011, 11:46:26
Před foreach si dejte proměnnou, třeba $hesloJeOk, s hodnotou false. Pokud v cyklu najdete správné heslo, nastavíte $hesloJeOk na true a ukončíte cyklus (break). Pokud se správné heslo nenajde, tak prostě cyklus projde všechny uživatele a v $hesloJeOk zůstane ta výchozí hodnota. A až potom piště nějakou hlášku uživateli.
|
||
Skreaver Profil * |
Tori:
Dakujem :) Dobabral som to,ešte raz prepáčte: <?php $login = $_POST['login']; $heslo= $_POST['heslo']; if ($login && $heslo) { $xml = simplexml_load_file("uzivatelia.xml"); $heslo_je_OK = 0; foreach ($xml->uzivatel as $uzivatel ) { if ($login == $uzivatel->ip & $heslo == $uzivatel->heslo ) { $heslo_ke_OK = 1; echo "zadali ste správne heslo"; break; } elseif ($login != $uzivatel->ip || $heslo != $uzivatel->heslo) { continue; } } echo "Zadané údaje sú nesprávne, prosím skontrolujte IP adresu alebo heslo"; } elseif (($login && $heslo) == false){ echo "Nezadali všetky údaje"; } ?> Moderátor Str4wberry: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Tori Profil |
#13 · Zasláno: 28. 8. 2011, 12:30:25
Skreaver:
řádek 16 vyhoďte, ř.20-24 jsou zbytečné. Až na ř.27 podle hodnoty v $heslo_je_ok vypíšete buď jednu nebo druhou hlášku. |
||
skreaver Profil |
#14 · Zasláno: 28. 8. 2011, 12:53:04
Diki moc,
všetko funguje : )Všetkým ďakujem. |
||
Časová prodleva: 13 let
|
0