URL: https://www.overclockers.at/coding-stuff/selbstaufrufende_function_unter_php_39019/page_1 - zur Vollversion wechseln!
Hi folks!
hab da folgendes Problem:
ich soll unter Php + MySQL einer DB mit ca 5000 Datensätzen je Eintrag ein 8 stelliges Zahlenpasswort vergeben:
nur hab ich da folgendes Problem:
die Zahl wird generiert, jedoch kann ich ned wirklich überprüfen, ob dieses "passwort" schon vorhanden ist..
ich könnte zwar ewige if schleifen verwenden, aber dies ist glaub ich etwas serverlastig
da ich noch nie mit function gearbeitet habe:
wie sieht sowas aus ?`
unter basic wärs einfach (vom sinn her)
10 if ($passwort == $passwort_aus_DB)
20 { neue Zahl erstellen
30 GOTO 10 }
40 else { $query }
ich hoffe ihr versteht wie und was ich meine..
besser hab ichs im moment nicht formulieren können
Gruss Markus
ist aber eigentlich wurscht, da es bei 8Zeichen 100000000(0 inkl.) Möglichkeiten gibt.
Zitat von Lukiist aber eigentlich wurscht, da es bei 8Zeichen 100000000(0 inkl.) Möglichkeiten gibt.
einfach eintippen(funkt sogar in turbo pascal).
so funktioniert auch a quicksort.
selber aufrufen == rekursiver aufruf
Zitat von Lukieinfach eintippen(funkt sogar in turbo pascal).
so funktioniert auch a quicksort.
selber aufrufen == rekursiver aufruf
Bitte wie wär's mit einer while Schleife? Wir sind ja da nicht in Lisp oder Mercury, dass wir mit Rekursionen herum******en.
wie wärs mit einem eliminationsverfahren?
weiß jetzt nicht wie es in datenbankan aussieht aber in C++ ein array von 99999999-9999999=90.000.000 8 stellige zahlen bei einem boolschen wert =1 bit wären das noch immer 11 MB.
ok das ist ineffizient.
(bei der primzahlenberechnung jedoch sehr brauchbar)
aehm, hast schomal probiert, das ganze in SQL zu überprüfen?
select * from <table> where <passwortfeld>=<neues passwort>
wennst einen datensatz zurückbekommst, heisst das, dass es das pw schon gibt
wenn net, dann kannst es verwenden
ein aufruf eines einzigen sql-queries dauert natürlich sehr viel weniger lange, als 5000x das gleiche aufzurufen
5000*1 < 5000 * 5000
überhaupt deswegen, da meines wissens nach mysql keinen query-cache hat
Wozu das select? Wenn das insert oder update ohne Probleme durchgeht, dann gibt's das PW noch nicht (er wird ja wohl einen Index auf's Passwort haben)
tjo, i schätz mal, dass er gar net weiss, wozu ein index gut ist
und des pw wird er wohl kaum als primary key habn
Danke für die Hilfe und Denkanstöße
habs jetzt so gelöst:
ist zwar ned ganz so sauber, aber es scheinz zu funzen
Code: PHP$i=1; While ($i==1) { $password=rand(11111111, 99999999); $password=eregi_replace("0", "x", $password); MYSQL_CONNECT("localhost", "root", "") MYSQL_SELECT_DB("password") or die ( "<H3>Datenbank nicht vorhanden</H3>"); $ergebnis = mysql_query( "SELECT * FROM `daten` WHERE password = '$password'"); $anz_reihen = mysql_num_rows( $ergebnis ); if ($anz_reihen == "0") { $db = MYSQL_CONNECT("localhost", "root", "") or die ("Konnte keine Verbindung zur Datenbank herstellen"); $db_select = MYSQL_SELECT_DB(password); if($db_select) $query = "insert into daten (vorname, nachname, email, password, ip, tqwert) values ('$vorname', '$nachname', '$email', '$password', '$ip', '$tqwert')"; $result = mysql_db_query("password",$query,$db) or die (mysql_error()); echo "Sie können sich jetzt mit $password einloggen"; $i=2; } }
Zitat von RingdingWozu das select? Wenn das insert oder update ohne Probleme durchgeht, dann gibt's das PW noch nicht (er wird ja wohl einen Index auf's Passwort haben)
errormeldungen kannst eh im php-script ausschalten
wie -> siehe doku
weiss ich net auswendig
irgendwas mit show_errors
als vollwärtige programmiersprache berherrscht php natürlich auch exception-handling
kannst auch dazu verwenden
Zitat von mop|simonerrormeldungen kannst eh im php-script ausschalten
wie -> siehe doku
weiss ich net auswendig
irgendwas mit show_errors
als vollwärtige programmiersprache berherrscht php natürlich auch exception-handling
kannst auch dazu verwenden
ich versteh die aufgabenstellung nicht ganz.
was ist schlecht an einem doppelten passwort?
und warum nur zahlen?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025