SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.12.2009, 16:26:58
hmp hmp ist offline
Anfänger
 
Registriert seit: Oct 2008
Alter: 35
Beiträge: 26
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;

Mit Zitat antworten
  #2  
Alt 23.12.2009, 16:34:03
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
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
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #3  
Alt 23.12.2009, 16:35:48
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: CreateRandomCode()

Zitat:
Zitat von hmp Beitrag anzeigen
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!
__________________

the best way to be ready for the future is to invent it

Geändert von Domi (26.12.2009 um 22:12:48 Uhr)
Mit Zitat antworten
  #4  
Alt 23.12.2009, 17:12:47
hmp hmp ist offline
Anfänger
 
Registriert seit: Oct 2008
Alter: 35
Beiträge: 26
AW: CreateRandomCode()

Zitat:
Zitat von Domi Beitrag anzeigen
... 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 :)
Mit Zitat antworten
  #5  
Alt 26.12.2009, 22:16:16
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
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
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #6  
Alt 27.12.2009, 12:21:10
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
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.
Mit Zitat antworten
  #7  
Alt 04.01.2010, 15:56:51
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: CreateRandomCode()

Zitat:
Zitat von feuervogel Beitrag anzeigen
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.
Dann gibts aber keine Doppelten....

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(;
strlen($code)<$num;$code.=$array[array_rand($array)]); 
    return 
$code

Mit Zitat antworten
  #8  
Alt 05.01.2010, 23:01:01
hmp hmp ist offline
Anfänger
 
Registriert seit: Oct 2008
Alter: 35
Beiträge: 26
AW: CreateRandomCode()

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Dann gibts aber keine Doppelten....

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(;
strlen($code)<$num;$code.=$array[array_rand($array)]); 
    return 
$code

Ist der besser, schneller oder zuverlässiger als mein Code? Interessiert mich halt, weil ich sehr daran interessiert bin meinen Code zu verbessern. Demnächst kommen noch andere schwierigere Code-Schnipsel :P. Geht einfach darum, dass das für mich eine Art Lernprozess ist. Ich denke das ich so am meisten und am besten lerne :)
Mit Zitat antworten
  #9  
Alt 05.01.2010, 23:02:44
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: CreateRandomCode()

wusstest du, dass du die zeit messen kannst? du könntest in ner for-Schleife einfach mal 10.000 Codes erstellen lassen und die Zeit messen was schnell und langsam ist, aber das hängt immer je nach Hardware ab ^^
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #10  
Alt 05.01.2010, 23:11:15
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: CreateRandomCode()

Zitat:
Zitat von hmp Beitrag anzeigen
Ist der besser, schneller oder zuverlässiger als mein Code? Interessiert mich halt, weil ich sehr daran interessiert bin meinen Code zu verbessern. Demnächst kommen noch andere schwierigere Code-Schnipsel :P. Geht einfach darum, dass das für mich eine Art Lernprozess ist. Ich denke das ich so am meisten und am besten lerne :)
Natürlich ist mein Code schöner als der aus deinem Eingangsposting!
Denn du durchläufst mit Foreach das Array.
Das ist völlig Sinn frei.
Aber eine Schleife muss schon sein....

Hier mal ein Code welcher dank Pseudosilben leicht zu merkende Passwörter generiert.
Die dürfen dann auch etwas länger sein.
PHP-Code:
<?php
error_reporting
(E_ALL); 
ini_set('display_errors'TRUE);

// gen_passwort erzeugt automatisch passwörter
function gen_passwort($buchstaben=0,$zahlen=0)
{
  
$buchstaben max(0,$buchstaben);
  
$zahlen     max(0,$zahlen);
  if(
=== $buchstaben && === $zahlen)
  { 
// dann gib dem Zufall eine Chance
    
$buchstaben mt_rand(5,8); // anzahl Buchstaben
    
$zahlen     mt_rand(3,5); // anzahl Zahlen
  
}
  
$konsonanten ='wrtzpsdfghklyxcvbnm';
  
$vokale='aeiou';
  
$passwort '';
  for (
$i=0;$i<$buchstaben;$i++)
  {
    if ((
$i 2)<1)
    {
      
$p mt_rand(0,strlen($konsonanten)-1);
      
$bst $konsonanten{$p};
      if(
mt_rand(0,1)>0$bst strtoupper($bst);
      
$passwort .= $bst;
    }else
    {
      
$p mt_rand(0,strlen($vokale)-1);
      
$passwort .= $vokale{$p};
    }
  }
  for (
$i=0;$i<$zahlen;$i++) $passwort .= mt_rand(1,9);
  return  
$passwort;
}


if(isset(
$_GET['action']) && 'download' === $_GET['action'])
{
    
header("Content-type: application/x-applikation");
    
readfile(__FILE__);
    exit;
}
if(isset(
$_GET['action']) && 'showsource' === $_GET['action'])
{
    
highlight_file(__FILE__); 
    exit;
}

if (isset(
$_POST['submit']))
{
   
$buchstaben  min(40,$_POST['buchstaben']);
   
$zahlen      min(40,$_POST['zahlen']);
   
$anzahl      min(40,max($_POST['anzahl'],1));
}else
{
  
$buchstaben 0;
  
$zahlen     0;
  
$anzahl     10;
}
?>
<a href="?action=download">Download</a>  ||  
<a href="?action=showsource">ShowSource</a>
<hr>
<form action="" method="post">
Buchstaben:<br>
<input type="text" name="buchstaben" value="<?php echo $buchstaben?>"><br><br>
Zahlen:<br>
<input type="text" name="zahlen" value="<?php echo $zahlen?>"><br><br>
Anzahl:<br>
<input type="text" name="anzahl" value="<?php echo $anzahl?>"><br><br>
<br>
<input type="submit" name="submit" value="Generieren">
</form>

<?php

// ausgabe
for ($i=0;$i<$anzahl;$i++) 
{
  echo 
gen_passwort($buchstaben,$zahlen).'<br>';
}  
?>
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30:34 Uhr.


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


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt