zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Wie kann ich mit PHP einen Varchar Freischaltcode generieren?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 22.03.2007, 16:58
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 24.09.2003
Beiträge: 243
braindead befindet sich auf einem aufstrebenden Ast
Standard Wie kann ich mit PHP einen Varchar Freischaltcode generieren?

Hi,
ich möchte für eine Webseite diverse Funktionen nur angemeldeten Nutzern zur verfügung stellen. Das klappt auch alles, aber bisher verläuft die Anmeldung so, das der Nutzer einen Nickname, ein Passwort und eine Emailadresse angibt, es wird noch kurz geprüft ob der Nickname oder die Emailadresse schon gespeichert sind und dann wird der Datensatz in der MySQL Datenbank abgelegt und schon ist die Anmeldung möglich. Nun will ich aber, um Missbrauch etwas einzuschränken, 1. Prüfen ob die Emailadresse auch wirklich exsitiert und 2. das automatische Anmelden durch Bots einschränken.
Dafür habe ich mir gedacht ich regele das so wie bei den meisten Internetforen, der Nutzer meldet sich an, wird aber erstmal als "nicht freigeschaltet" geparkt und erhalt dann eine Emailadresse mit einem Aktivierungslink.
Der Link soll so aussiehen das er auf ein PHP Script Verweist mit einem speziellen Code (irgentein zufallsgenerierter VarChar string z.b.) als angehängter Variable es wird dann geprüft ob die Variable zu einem "nicht freigeschalteten" Account gehört und wenn ja wird dieser Account freigeschaltet.
Nun meine Fragen:
1. Wie generiere ich so einen Code am besten, ich meine ich könnte mir dafür jetzt zwar eine Funktion schreiben, aber dafür gibt es soch sicher schon irgentwas fertiges hoffe ich?
2. Sollte ich vielleicht auch noch den Nutzernamen als GET Variable an den Aktivierungslink dranhängen? Um zu verhindern das irgentjemand mit ausgetesteten Codes (was eigentlich nicht möglichsein sollte) irgentwelche anderen Accounts freischaltet? Oder kann ich davon ausgehen das bei genügent komplexen Codes diese Masname unnötig ist?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 22.03.2007, 17:22
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.735
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Oft wird einfach ein Hash-Wert einer zufälligen Zeichenkette verwendt, beispielsweise:
Code:
md5(uniqid(rand(), true))
Diesen vorherzusagen, ist praktisch unmöglich.
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 22.03.2007, 17:25
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.034
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Hallo,

zu eins hab ich was fertiges rumfliegen, ist allerdings nichts besonderes aber funktioniert als (eigentlich Passwortgenerator) ganz gut:

PHP-Code:
function generatePassword($iLength 8)
{
    
$salt "abchefghjkmnpqrstuvwxyz0123456789";
    
srand((double)microtime() * 1000000);
        
$i 0;
        while (
$i $iLength) {
            
$num rand() % 33;
            
$tmp substr($salt$num1);
            
$pass $pass $tmp;
            
$i++;
        }
    return 
$pass;

Für deinen Freischaltcode würde ich mehr als 8 Zeichen nehmen.

Und ja, ich würde auch zusätzlich noch den Namen / das Login überprüfen, ob das nun wirklich notwendig ist, darüber lässt sich wohl streiten.

Um 100% sicher zu gehen könntest du auch kontrollieren, ob es den Code evtl. schon in der Datenbank gibt um auszuschließen dass dieser mehrfach vergeben wird.
Mit Zitat antworten
  #4 (permalink)  
Alt 22.03.2007, 17:44
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.735
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Ist es Absicht, dass die Zeichen „d“, „i“, „l“ und „o“ fehlen und „h“ doppelt vorkommt? Außerdem ist der Algorithmus ganz schön lahm.
__________________
Markus Wulftange
Mit Zitat antworten
  #5 (permalink)  
Alt 22.03.2007, 22:37
Erfahrener (PHP) Benutzer
neuer user
 
Registriert seit: 21.03.2007
Beiträge: 7
tontechniker befindet sich auf einem aufstrebenden Ast
Standard

Ich würde den Code wie folgt generieren:
Code:
md5 ( $user . time ( ) );
ist schneller und kann (von kryptologischen Analysen mal abgesehen) nicht zweimal vorkommen
Mit Zitat antworten
  #6 (permalink)  
Alt 22.03.2007, 23:30
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.034
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Nein, das mit den Zeichen ist keine Absicht
Der Vorteil von dem Ding ist, dass halbwegs lesbare Strings bei rauskommen. Wenn man die auch eintippen lassen möchte ist das von Vorteil, wenn der Code eh nur im Link vorkommt braucht man das nicht wirklich.
Mit Zitat antworten
  #7 (permalink)  
Alt 23.03.2007, 02:24
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.735
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Zitat:
Zitat von inta Beitrag anzeigen
Der Vorteil von dem Ding ist, dass halbwegs lesbare Strings bei rauskommen.
Wenn einem Alphabet zwei Vokale genommen werden, werden die Wörter bestimmt nicht lesbarer. Da wäre eine Funktion, die ein wirklich lesbare Wörter erzeugt, besser:
Code:
function generateReadableWord( $length=8 )
{
	$cons   = 'bcdfghjklmnprstvwxz';
	$vowels = 'aeiouy';
	$retVal = '';
	for( $i=0; $i<$length; $i++ ) {
		if( $i % 2 ) {
			$retVal .= $vowels{rand()%5};	
		} else {
			$retVal .= $cons{rand()%18};
		}
	}
	return $retVal;
}
__________________
Markus Wulftange
Mit Zitat antworten
  #8 (permalink)  
Alt 23.03.2007, 10:57
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.034
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Da oben steht bereits, dass das mit den fehlenden Zeichen keine Absicht ist.

Deine Lösung mag noch einfacher lesbar sein, schränkt dafür aber wieder die Anzahl der möglichen Kombinationen ein. Ob das in irgendeiner relevanten Größenordnung liegt weiß ich nicht, Mathematik ist nicht gerade meine Stärke.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Kontaktforumlar allgemeiner aufbau Krulle Serveradministration und serverseitige Scripte 15 17.06.2010 12:44
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 12:13
php Datei in css webseite einbinden X5-599 Serveradministration und serverseitige Scripte 14 19.05.2008 09:52
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
PHP lernen? Grafiken später hinzufügen? chilla Offtopic 0 21.07.2007 14:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:06 Uhr.