php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 3 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 22-01-2010, 18:11
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard "Sicherer" Gutscheincode

Im Moment erstelle ich ein kleines System für die Online-Bestellung eines Gutscheins. Der Gutschein muss dann natürlich mit einem Code versehen sein und hier mach ich mir grad etwas Gedanken: Wie soll der Code aufgebaut sein?

- Er darf natürlich nicht erratbar sein, also nicht einfach nur aus einer fortlaufenden ID oder so bestehen, da käme ja jeder mir nix dir nix dahinter.
- Andererseits sollte er nicht zu lang und zu kryptisch sein, damit er leicht per Telefon durchgegeben werden kann, oder damit eine Kassiererin nicht eine halbe Stunde damit verbringen muss, den Code korrekt in das Abgleich-System einzutippen.

Ich denke da an sowas wie z.B.:
mind. 5-stelligen ID zu Beginn - jjmmdd - 5-stellige zufällige Buchstabenfolge. Er könnte also so aussehen:

24567-100122-BXDHS

Kritik, Vorschläge? Ich weiß grad nicht ob ich da grad zuviel Gedanken dran verschwende usw...
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #2 (permalink)  
Alt 22-01-2010, 18:21
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

vom Grundprinzip her finde ich deinen Ansatz in Ordnung, aber um es noch leichter zu machen, kannst du auch gängige zusammengesetzte Substantive mit einer Zahl verbinden. Das lässt sich am Telefon noch besser kommunizieren. Das Wort ist bekannt und Ziffern sind weniger verwechselbar als Buchstaben. Ein paar Beispiele:

Kirschbaum4312
Sommerreifen7689
Tellerrand1425

Ich finde, dass das genau so schwer zu erraten ist, aber leichter zu merken bzw. am Telefon weiterzugeben.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 22-01-2010, 18:35
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wie viele Gutscheincodes brauchst du? Wie viele Gutscheine willst du in Umlauf bringen?
Von wem und wie wird der Code verwendet?
-> Kann man ihn öfter verwenden? Dann sollte er leicht merkbar sein.
-> Muss man ihn in einem Computer eingeben? Dann sollten bestimmte Zeichen wegen Verwechslungsgefahr vermieden werden, die Prüfung case insensitive sein und die Bindestriche optional.

Das hat alles Einfluss darauf, wie lang der Code wird. Als Beispiel: Du brauchst 1000 Gutscheine. Der Code darf nur aus a-hjkm-ux-z2-9 bestehen. => Der Code kann kein Datum enthalten (1 ist nicht erlaubt). Der Code muss mindestens 3stellig sein, denn 30^2 < 1000. Mit 30^3 = 27000 ist die Chance einen gültigen Code zu erraten 1 zu 27, mit 4 Stellen 1/810. 4 Stellen kann man auch mit einem Blick erfassen, merken und abtippen. Ab 5 Stellen neigen Menschen dazu, es in Blöcke zu zerlegen, die einzeln abgetippt werden, wodurch sich die Fehlerrate erhöht.

Wieso soll eigentlich ein Datum in den Code? Sobald du Informationen in den Code packst, schränkst du dich unnötig ein. Die Information kann auch woanders gespeichert werden mit einer Zuordnung zum Code.

Wozu sind die Gutscheine eigentlich gedacht? Wenn damit etwas vergünstigt gekauft werden kann und beim Kauf ohnehin eine Lieferanschrift angegeben werden muss, lohnt sich der Aufwand vielleicht gar nicht. Dann genügt ein Aktionscode für alle Teilnehmer. Über die Lieferanschrift kann dann sichergestellt werden, dass eine Person den Code nur einmal verwendet.

Geändert von onemorenerd (22-01-2010 um 18:37 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 22-01-2010, 18:48
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Denk dir ein Prüfziffer-Algorithmus aus (Inspiration kannst du dir zum Beispiel hier holen), und markiere Benutzte Codes. Je nach Anwendungsfall würde ich aber in der Tat zu onemorenerds Vorschlag mit dem Aktionscode tendieren.
Mit Zitat antworten
  #5 (permalink)  
Alt 22-01-2010, 19:42
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Es handelt sich um Geschenkgutscheine für Hotels.

Person A bestellt online den Gutschein, führt die Bezahlung auf der Seite per Kreditkarte durch, nach erfolgter Zahlung erhält Person A den Gutschein nach Wahl als PDF per Mail oder fertig auf postalischem Weg zugesandt und im System wird der Gutschein-Datensatz als bezahlt und noch nicht abgegolten markiert.

Person A verschenkt Gutschein dann an Person B, welche den Gutschein dann im Hotel einlöst. Weder Person A noch Person B sollte (da Gutschein ja evtl. selber druckbar) nun einen evtl. gültigen Code erraten können und sich damit selber noch nen Gutschein ausstellen.

Das kann bei genauerem überlegen schon gar nicht mehr so einfach passieren, da selbst wenn jemand einen gültigen Code erraten würde, er dazu auch noch den passenden Betrag erraten müsste - von daher schmelzen die Chancen eh schon ein gutes Stück dahin.


@onemorenerd
Wegen deinem Einwand zum Datum: Ist das tatsächlich nicht erlaubt? Der Gutschein verfällt selbstverständlich nicht - hat das evtl. den Hintergrund wegen Schindluder mit verfallenen Gutscheinen?
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #6 (permalink)  
Alt 22-01-2010, 20:01
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ich kann zwar nicht erkennen, wo onemorenerd geschrieben hat, dass ein (verfallsdatum) nicht erlaubt sei, jedoch ist es wahr, dass bezahlte gutscheine nicht verfallen dürfen.

letztendlich ist ein Gutschein nichts anderes als ein Passwort. Die Daten des Beschenkten kannst du sicher nicht speichern, von daher bleibt dir nichts anderes als den code so zufällig wie möglich zu machen.

Den Sinn einer Prüfziffer erkenne ich an dieser Stelle übrigens nicht direkt. Vorausgesetzt ich errate den Code, so muss ich so oder so den gesamten Code erraten. Ein Hash würde das ganze ja noch eher berechenbar machen. (zu dem Zeitpunkt war aber auch noch nicht bekannt, dass die Codes gespeichert werden.)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #7 (permalink)  
Alt 22-01-2010, 20:35
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von TobiaZ Beitrag anzeigen
Ich kann zwar nicht erkennen, wo onemorenerd geschrieben hat, dass ein (verfallsdatum) nicht erlaubt sei, jedoch ist es wahr, dass bezahlte gutscheine nicht verfallen dürfen.
Zitat:
Zitat von onemorenerd Beitrag anzeigen
=> Der Code kann kein Datum enthalten (1 ist nicht erlaubt).
Evtl. hab ich das nur falsch interpretiert.

Im ersten Post war ich mit Details noch zu geizig

Im Prinzip hast du Recht - es ist eigentlich einfach ein Passwort das unique sein muss. Es soll wie gesagt nicht zu kryptisch aussehen - in Kombination mit dem Gutscheinbetrag ist es ohnehin nicht mehr sehr leicht einen gültigen Gutschein zu erstellen - Bsp:

AAAA - 500 EUR
AAAB - 400 EUR
AAAC - 200 EUR

Selbst wenn der Code jetzt simpel fortlaufend wäre und dies einer erkennen würde, müsste er schon noch den Betrag zum Code wissen, denn falls jetzt einer einen Gutschein AAAB einlösen möchte, dieser allerdings über 300 EUR lautet ist schon klar, dass hier eine Fälschung vorliegt. Ich denke ein Zusammensetzung aus z.B. 3 zufälligen Ziffern und 3 zufälligen Buchstaben ergeben genug Möglichkeiten, ist leicht zu lesen und kann wohl kaum noch dazu mit dem richtigen Betrag erraten werden.

Edit:
@onemorenerd
Jetzt hab ich das erst richtig gesehen - wegen der Verwechslungsgefahr von ilIL1 sollten die nicht vorkommen und deshalb kann er kein Datum enthalten, weil 1 eben rausfällt. Soweit so gut - aber warum wird v und w ausgeschlossen? Wo ergeben sich hier Verwechslungsmöglichkeiten?
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (22-01-2010 um 20:54 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 22-01-2010, 20:53
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

die wahrscheinlichkeit kannst du ja selber ausrechnen. Mir wärs noch etwas zu wenig, vor allem weil zahlen max. 10 möglichkeiten pro ziffer liefern.

Auf den Geldbetrag würd ich auch nicht zu viel geben. 75,84 werden wohl nur die wenigsten verwenden. 100 oder 250 sicher mehr.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9 (permalink)  
Alt 22-01-2010, 21:37
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Die Wahrscheinlichkeit ist im konkreten Fall sowieso eine Sache für sich. onemorenerd ging da noch von einem anderen Ansatz aus, nämlich das jetzt z.B. einfach 1000 Codes verschickt werden. Wie groß die Chance ist eine momentan gültigen Code zu erraten ist hier aber nicht im vorraus zu erkennen, da nicht bekannt ist wie viele Gutscheine bestellt werden. Zudem verringert sich mit jedem zwischenzeitlich eingelösten Gutschein wieder die Wahrscheinlichkeit einen gültigen Code zu erraten.

IMHO bleibt der Code noch leichter zu lesen (und auch zu tippen), wenn er aus Blöcken besteht, die entweder nur Buchstaben oder nur Ziffern enthalten:
2345-ABCD
Selbst wenn man nun die Möglichkeiten pro Stelle wegen Verwechslungsgefahr einschränkt (v und w hab ich immer noch nicht verstanden - eher müsste aber O noch ausgeklammert werden) und man von 1000 gültigen Codes im System ausgeht kommt man noch auf knapp 1 zu 1.000.000 .

Ob ich die Einschränkung überhaupt vornehm, da bin ich mir eh noch nicht sicher - was das durchgeben am Telefon angeht, müsst man da weitere Buchstaben ausschließen: h und k ist am Telefon schwer auseinanderzuhalten, auch m und n, sowie f und s. Zumindest fallen mir die auf Anhieb ein. Wo fängt man da an und wo hört man auf? Die Verwendung eines halbwegs tauglichen Fonts sollte da bei der Lesbarkeit die gröbsten Zweifel beseitigen.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #10 (permalink)  
Alt 23-01-2010, 01:41
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Quetschi Beitrag anzeigen
was das durchgeben am Telefon angeht, müsst man da weitere Buchstaben ausschließen: h und k ist am Telefon schwer auseinanderzuhalten, auch m und n, sowie f und s.
„Eins-Zwo-Drei-Vier, Hugo-Karl-Martha-Norbert”

Also da sehe ich eigentlich überhaupt kein Problem.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 23-01-2010, 02:17
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Im Osten sieht das alles natürlich vollkommen anders aus … SCNR
Mit Zitat antworten
  #12 (permalink)  
Alt 23-01-2010, 06:55
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

V und w habe ich ausgeschlossen, weil je nach verwendetem Font zwei aufeinanderfolge v wie ein w aussehen. Das gilt manchmal sogar für n und m, allerdings viel seltener, da die meisten Fonts bei diesen Buchstaben eine Serife am Grundstrich haben oder zumindest überhaupt einen erkennbaren Grundstrich.
Die Null habe ich wegen Verwechslungsgefahr mit Gross-Oh ausgeschlossen. Zwar sind Großbuchstaben generell ausgeschlossen, aber das weiß der Kunde ja nicht.
Das hängt natürlich alles vom Font ab. Bei dessen Auswahl muss man allerdings auch bedenken, dass sich die Kunden den Gutschein selbst ausdrucken sollen. Also entweder eine Systemschrift wählen oder PDF mit eingebettetem Font generieren.

Von der Idee, den Wert des Gutscheins im Code zu kodieren, würde ich Abstand nehmen. Ich sehe darin keinen Mehrwert. Der Kunde weiß davon nichts, kann daher aus dem Code nicht den Wert ableiten. Sobald er es kann, z.B. weil er genügend Codes gesehen hat und das System erkannte, kann er den Code auch fälschen.

Die Anforderungen sind klar: Ein Code muss einen Datensatz in der DB eindeutig identifizieren und möglichst les- und sprechbar sein. Das ist ziemlich einfach. Mach es nicht komplizierter.

Für gute Lesbarkeit sollte übrigens kein Zeichen mehr als zweimal hintereinander vorkommen. Das habe ich in meinem ersten Beitrag ganz vergessen und es reduziert natürlich die Anzahl möglicher Codes.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bool Wert "false" obwohl er eigentlich "true" sein sollte :/ flowgrow Projekthilfe 5 22-03-2008 23:38
5x Praktikum: "Marketing" oder "Webdesign" o. "Kommunikation" ... transparent Jobgesuche 4 18-06-2007 17:02
Soap "Could not connect to host" "HTTP" Fehler. Funktioniert auf localhost aber Tormentor PHP Developer Forum 1 29-09-2006 15:26
Mysql einrtag bei <input type="submit" name="Submit" value="Posten" Mathes HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 05-07-2006 16:05
"Focus": Absatz von PC-Spiel "Counter-Strike" seit Erfurt gestiegen Aroree News / Kostenloses 0 09-06-2002 13:05

Themen-Optionen
Thema bewerten
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.

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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:37 Uhr.