PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Entwicklung und Softwaredesign (http://www.selfphp.de/forum/forumdisplay.php?f=14)
-   -   CreateRandomCode() (http://www.selfphp.de/forum/showthread.php?t=22588)

hmp 23.12.2009 15:26:58

CreateRandomCode()
 
Moinsen :)

Ich habe mir nun ein kleines Script gebastelt, welches anhand der anzugebenen Stringlänge, einen String, aus zufälligen Ziffern und Buchstaben, kreiert. So nun habe ich allerdings ein paar Versionen im Internet gefunden die anders sind, aber im Prinzip das gleiche tun. Jetzt wärde für mich irgendwie interessant zu erfahren, ob meine Version soweit ganz gut ist, bzw. was man besser machen könnte, wieso, weshalb, warum usw.

Wäre euch dankbar wenn ihr mal ein wenig Feedback dazu geben könntent :)

PHP-Code:

function createRandomCode($num) {
    
$array=array('','a','A','b','B','c','C','d','D','e','E','f','F',
                 
'g','G','h','H','i','I','j','J','k','K','l','L','m','M',
                 
'n','N','o','O','p','P','q','Q','r','R','s','S','t','T',
                 
'u','U','v','V','w','W','x','X','y','Y','z','Z','1','2',
                 
'3','4','5','6','7','8','9','0','-','_');
    
$code='';
    
$i=0;
    foreach(
$array as $value) {
        
$code.=$array[rand(0,64)];
        if(
$i==$num) break;
        
$i++;
    }
    return 
$code;



Domi 23.12.2009 15:34:03

AW: CreateRandomCode()
 
Hi,

kommt drauf an, also verbessern am Code könntest bestimmt noch was, allerdings würde ich woander ansetzen zuerst: Wenn du damit Passwörter erstellen willst die für Benutzer sind, dann würde ich so Zeichen wie I und l und 1 usw rauslassen, da es sehr schnell zu Verwechslungen kommen kann.

Wenn du wirklich alle Buchstaben von A-Z und von a-z willst, dann nimm doch einfach die ASCII Codes und erzeuge daraus eine Zahl per Zufall und wandle am Schluss den Code um in die Buchstaben.

Domi

Domi 23.12.2009 15:35:48

AW: CreateRandomCode()
 
Zitat:

Zitat von hmp (Beitrag 133272)
PHP-Code:

$code.=end(shuffle($array)); 


... somit haste das ganze auch variabel, egal wie viel Einträge du im Array hast, kannste aber auch mit count zählen!

hmp 23.12.2009 16:12:47

AW: CreateRandomCode()
 
Zitat:

Zitat von Domi (Beitrag 133276)
... somit haste das ganze auch variabel, egal wie viel Einträge du im Array hast, kannste aber auch mit count zählen!

Hehe, ja an dem count() hatte ich auch Sekunden nach dem posten des Threads hier gedacht ;)

Zu dem ASCII: Das kommt wohl eher nicht in frage, da ich keine §$%/§ usw. Zeichen in dem String haben möchte. Das mit dem Verwechseln hab ich aufgenommen, danke :)

Domi 26.12.2009 21:16:16

AW: CreateRandomCode()
 
Aber was ich in der Eile gar nicht gesagt habe: Du läufst mit foreach das Array durch? Warum? Laufe doch einfach per for durch! Alles andere ist irgendwie quatsch.

PHP-Code:

function createRandomCode($num) {
    
$array=array('','a','A','b','B','c','C','d','D','e','E','f','F',
                 
'3','4','5','6','7','8','9','0','-','_');
    
$code='';

    for(
$i 0$i $num$i++) {
        
$code.=end(shuffle($array));
    }
    return 
$code;


*** umgetestet ***

.... aber ich glaub du weißt was ich mein ;)

Domi

feuervogel 27.12.2009 11:21:10

AW: CreateRandomCode()
 
das ist doch alles...nicht so richtig sinnvoll.

warum shuffle mehrmals aufrufen? eimal reicht doch völlig und dann mit array_slice ein stück rausschneiden.

hmp 04.01.2010 13:50:26

AW: CreateRandomCode()
 
Zitat:

Zitat von Domi (Beitrag 133324)
Aber was ich in der Eile gar nicht gesagt habe: Du läufst mit foreach das Array durch? Warum? Laufe doch einfach per for durch! Alles andere ist irgendwie quatsch.

PHP-Code:

function createRandomCode($num) {
    
$array=array('','a','A','b','B','c','C','d','D','e','E','f','F',
                 
'3','4','5','6','7','8','9','0','-','_');
    
$code='';

    for(
$i 0$i $num$i++) {
        
$code.=end(shuffle($array));
    }
    return 
$code;


*** umgetestet ***

.... aber ich glaub du weißt was ich mein ;)

Domi

Hm fragt sich nur wieso alles Andere quatsch wäre? Evtl. aus Performancegründen?

Domi 04.01.2010 14:27:30

AW: CreateRandomCode()
 
nimm mal das "alles" net so ernst ;)

.. ist ja au nur nen Vorschlag von mir *hehe*

hmp 04.01.2010 14:47:02

AW: CreateRandomCode()
 
Zitat:

Zitat von Domi (Beitrag 133453)
nimm mal das "alles" net so ernst ;)

.. ist ja au nur nen Vorschlag von mir *hehe*

Hehe darum geht es mir ja nicht :P Geht mir darum, da es ja viele verschiedene Wege gibt, bin ich immer sehr daran interessiert, warum der eine oder andere besser ist. Ist reine Interesse :P

Domi 04.01.2010 14:55:04

AW: CreateRandomCode()
 
naja, wie oben geschrieben wurde, ist meine auch net die allerbeste, gibt halt total viel Wege, aber frag doch mal direkt was wissen magst ;)

im Endeffekt ists immer nen Kompromiss von Performance und Einfachheit vom Code


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:52:52 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.