| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

03-09-2009, 13:56
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
kundennummer aus email genieren und zurückrechnen
Hallo,
ich hab hier ein kleines Script geschrieben, das mir eine Kundennummer ausgibt. Zurückrechnen ist noch nicht programmiert, ist aber kein Problem.
Meine Problem: Die Kundennummer wird zu lang.
Wie kann ich das nun verkürzen, ohne die Rückrechnung und die Einzigartigkeit zunichte zu machen. Hat jemand eine Idee?
PHP-Code:
$email = "info@comdesi.de";
$laenge = strlen($email);
$letters = Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".","@");
$combination = Array();
for($i=0; $i<count($letters); $i++)
{
$combination[$letters[$i]] = $i;
}
$kdn = "";
for($i=0; $i<$laenge; $i++)
{
$values = $email[$i];
$kdn .= $combination[$values];
}
echo "<br>";
echo $kdn;
echo "<br>";
|

03-09-2009, 14:07
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Mit wie vielen Kunden soll das System dann umgehen können?
|

03-09-2009, 14:11
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
mit 1000 etwa
Hab jetzt ein Script gefunden: Die Frage ist hier jedoch noch, wie oder ob ich das zurückrechnen kann.
PHP-Code:
function getHashNotWorking($argStrHashMethod, $argStrString)
{
$strHashMethod = 'MHASH_' . $argStrHashMethod;
$strHashedString = bin2hex(mhash($strHashMethod, $argStrString));
return $strHashedString;
}
echo getHashNotWorking('SHA512', 'info@comdesi.de');
|

03-09-2009, 14:12
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
warum speicherst du die nicht in der Datenbank und nimmst als Kundennummer dann den auto_increment-Wert?
Alternativ kannst du durch das begrenzte Alphabet und die case-insensitivity jedes Zeichen in einen 6-Bit-Wert quetschen und die entstehende Bitfolge dezimal darstellen, aber dann kommt für eine lange Adresse (caroline.mustermann@mailbox.uni-darmstadt.de) trotzdem ein recht großer Wert raus (z. B. 8589934591).
Gruß,
Anja
|

03-09-2009, 14:14
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von sanktusm
Die Frage ist hier jedoch noch, wie oder ob ich das zurückrechnen kann.
|
Eine Hashfunktion ist nicht umkehrbar.
|

03-09-2009, 14:16
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
Das klingt nach genau dem was ich suche, wie funktioniert das genau?
Zitat:
Zitat von AmicaNoctis
Hallo,
warum speicherst du die nicht in der Datenbank und nimmst als Kundennummer dann den auto_increment-Wert?
Alternativ kannst du durch das begrenzte Alphabet und die case-insensitivity jedes Zeichen in einen 6-Bit-Wert quetschen und die entstehende Bitfolge dezimal darstellen, aber dann kommt für eine lange Adresse (caroline.mustermann@mailbox.uni-darmstadt.de) trotzdem ein recht großer Wert raus (z. B. 8589934591).
Gruß,
Anja
|
|

03-09-2009, 14:17
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Welches von beiden?
|

03-09-2009, 14:22
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
in einen 6 bit Wert quetschen
das würde mein Problem lösen
|

03-09-2009, 14:26
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
1. Alphabet aufstellen
2. Codierungsfunktion schreiben (Algorithmus ähnelt base64_decode)
2. Decodierungsfunktion schreiben (Algorithmus ähnelt base64_encode)
Oder du überweist mir per Paypal 30,- Euro, dann hast du's in ner halben Stunde im Postfach.
|

03-09-2009, 14:37
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
komme gerne auf Dein Angebot etwas später zurück
|

03-09-2009, 15:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von AmicaNoctis
aber dann kommt für eine lange Adresse (caroline.mustermann@mailbox.uni-darmstadt.de) trotzdem ein recht großer Wert raus (z. B. 8589934591).
|
Ups, ich hab mich vertan. 8589934591 sind 33 Bit, es kommen aber 33 Byte raus, also sowas in der Länge: 22767755615518320409530122791351201750675520991323495329182222244488086251504648
Sorry, hatte nen totalen Denkfehler. Also doch die Datenbank-Variante.
|

03-09-2009, 16:04
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
hab ein Script gefunden, dass ganz gut passt
Ich möchte es gerne Umschreiben. Es sollen drei Zahlenfolgen generiert werden also AAC100 oder ABD111. Ich blick leider da nicht ganz durch wie ich das anstellen soll
PHP-Code:
$num = "A00";
$max = "Z10";
$step = 10;
$count = 0;
$number_of_customer = 20;
// Going from A000..A010 until Z010
while ($count <= $number_of_customer) {
$ord = ord($num{0});
$digs = substr($num, 1);
if (++$digs > $step) {
$num = chr(++$ord)."000";
} else {
$num = sprintf(chr($ord)."%03d", $digs);
$count++;
}
echo $num."<br>";
}
echo $num;
|

03-09-2009, 16:08
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von sanktusm
Ich blick leider da nicht ganz durch wie ich das anstellen soll
|
und ich blick leider nicht durch, was du anstellen willst.
|

03-09-2009, 16:17
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
mehr Buchstaben
Ich habe mir vorgestellt dass ich mehr mit Buchstaben arbeiten will. So etwa 3Buchstaben vor einer dreistelligen Zahl. Ich will also Nummern generieren wie etwa:
AAB100
ABC200 usw.
Schließlich klappt das ja mit dem Script mit einem Buchstaben. Da müsste man doch auch mehrere verwenden können.
|

03-09-2009, 16:23
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ok, soweit klar. Und was klappt dabei nicht?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|