|
|
|
Detail
|
|
Code: |
if (isset($_POST['password'])){
$user_eingabe = $_POST['password'];
} elseif ($_COOKIE['user_progress']) {
$user_eingabe = $_COOKIE['user_progress'];
} else {
$user_eingabe = '';
}
$loesung = array(1 => "TriggerTG",2 => "SirSiggi",3 => "Zensiert",4=> "Wahooka");
foreach($loesung as $key => $loesungswort) {
if ($user_eingabe == $loesungswort){
$wert_fuer_cookie = $loesungswort;
$_GET['id'] = 1+ $key;
}
else Ja was?????
} |
|
|
|
|
|
|
|
|
Hier ist eine Variante die das Script einfach abwuergt...
if(password != 'the right answer')
{
die('fail!');
}
/alternativ, aber das funktioniert nur wenn das Script noch nichts ausgegeben hat:
if(password != 'the right answer')
{
header('Location: previousPage.php'); //redirect
exit;
}
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Y2Keeper am 21.03.2008 11:09]
|
|
|
|
|
|
| Zitat von Wahooka
|
Code: |
if (isset($_POST['password'])){
$user_eingabe = $_POST['password'];
} elseif ($_COOKIE['user_progress']) {
$user_eingabe = $_COOKIE['user_progress'];
} else {
$user_eingabe = '';
}
$loesung = array(1 => "TriggerTG",2 => "SirSiggi",3 => "Zensiert",4=> "Wahooka");
foreach($loesung as $key => $loesungswort) {
if ($user_eingabe == $loesungswort){
$wert_fuer_cookie = $loesungswort;
$_GET['id'] = 1+ $key;
}
else Ja was?????
} |
|
| |
Da du ja das aktuelle Level ueber die id mitschickst, koennte man das evtl. besser so machen :x
Ich hab das damals ein wenig dumm konstruiert :/
|
Code: |
if ($user_eingabe == $loesung[$_GET['id']]) {
$wert_fuer_cookie = $loesung[$_GET['id']];
$_GET['id'] = 1+ $key;
}
|
|
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Zensiert am 21.03.2008 11:14]
|
|
|
|
|
... :-/
|
Weder das eine noch das andere kann funktionieren, da ersteres ja irgendwo den Aufbau der Seite kappt (also gar nichts mehr darstellt oder am Ende der Seite ein Fail! reinknüppelt) und das Zweite ja eine redirection braucht, die ich nirgendwoher erhalten kann. Wenn ich jetzt bei ?id=34 bin, soll er einfach bei 34 bleiben und nicht irgendwo hin redirecten - das er bei 34 ist, weiß er ja nicht.
Oder so ähnlich :D
|
|
|
|
|
|
|
|
|
|
Argh
|
Jetzt beginnt er (ohne Cookie) bei id=2 und springt bei richtiger oder falscher Antwort munter in den ids rum, Kris... :ugly:
|
|
|
|
|
|
|
kannst mal deinen kompletten quelltext nopasten, ist en wenig schwer das nachzuvollziehen. :x
|
|
|
|
|
|
Nopaste - Lieber Dopaste!
|
Kris nimmt sich der Sache gerade an und "nopasten" ist für mich ein unbekanntes Wort, aber danke für die Hilfe! :-x
|
|
|
|
|
|
|
| Zitat von Wahooka
Kris nimmt sich der Sache gerade an und "nopasten" ist für mich ein unbekanntes Wort, aber danke für die Hilfe! :-x
| |
Na ...
|
|
|
|
|
|
|
|
|
|
|
Was hat dir eigentlich an der alten version nicht gefallen? Bzw. was wolltest du jetzt aendern? Das auf eine falsche Eingabe reagiert wird?
|
|
|
|
|
|
Bug
|
Was heißt hier nicht gefallen? Es ist einfach so, daß er bei einer falschen Formulareingabe, also einem falschen Passwort, einfach auf den Index zurückspringt - so war das eigentlich nicht gedacht.
|
|
|
|
|
|
|
|
|
|
|
Boah, scheiss auf die Weltwirtschaft, der Dollerkurs darf ruhig nochmal ein ganzes Stück fallen!
|
|
|
|
|
|
|
wie kommste denn jetzt da drauf? :X
brauchste was aus amiland?
|
|
|
|
|
|
|
Brauchen nicht unbedingt. Aber es gibt so ein paar Dinge die schon sehr verlockend sind. Schon beim aktuellen Dollarkurs.
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Wahooka
Ohne jetzt nochmal auf den Code geschaut zu haben, die Frage, ob ein if password = false do nothing existiert?
| |
if !($password == $richtige_lösung) {}
aber das will man nicht. zum grundgedanken dahinter: beim imperativen programmieren sagt man der maschine, was sie tun soll und wenn man schweigt, dann geht die maschinen in nen ruhemodus oder kümmert sich um was anderes. fakt ist jedenfalls, dass man der maschine immer sagt, was sie tun soll und nie, was sie lassen soll. geht auch schwer. man müsste ja blacklists von handlungen und befehlen erstellen, die dann nicht ausgeführt werden dürften. also sag der maschine, was sie tun soll (richtiges passwort? neue seite!) und den rest erledigt das ding von alleine.
ich glaub, du willst dir auch erstmal in pseudocode ne struktur aufschreiben. das sieht reichlich chaotisch aus, was du da schrobst.
|
Code: |
if isset($cookie) -> $level = $cookie else $level = 1
if $userpasswort = passwortliste[$level+1] -> $cookie = $cookie + 1, $level = $level +1
include($level)
|
|
so in der art sollte das grundkonzept sein. standardmäßig zeigst du das erste rätsel an, wenn ein cookie gesetzt ist, dann eben das höhere. und wenn ein richtiges passwort zum aktuellen level übergeben wurde, dann erhöhe den aktuelle level (und cookie) und zeig das zugehörige rätsel an. immer erstmal schlicht anfangen und dann ausschmücken, sonst verfranst man sich viel zu leicht.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von rABBI am 21.03.2008 12:55]
|
|
|
|
|
|
Hi. Ich geh ins Bett. Gute Nacht.
|
|
|
|
|
|
|
ja nee is klar, ne. und ich dachte, ich hätte nen kaputten rythmus.
|
|
|
|
|
|
|
| Zitat von Mobius
So, Vorschläge sind raus. Hoffentlich nehmen sie die Vorschläge, dann muss ich keine neuen machen.
| |
Abgelehnt und auf Vorgaben verwiesen. Wollen eine riesengroße Bilddatei als Hintergrundbild...
|
|
|
|
|
|
\o/
|
Juhu, es klappt jetzt!
Riddle-Skelett
Kris hat richtig gute Arbeit geleistet! Dann werde ich beizeiten mal mit dem Content beginnen.
Danke noch für den Kommentar, rabbi.
|
|
|
|
|
|
|
kannst ja noch einbauen, dass man bescheid bekommt, dass die antwort falsch war.
und im zweifelsfalle würde ich mal über case insensitive und levenshtein nachdenken.
|
|
|
|
|
|
hmm
|
| Zitat von rABBI
kannst ja noch einbauen, dass man bescheid bekommt, dass die antwort falsch war.
| |
Das werde ich vielleicht noch angehen - klingt ja nicht so kompliziert.
| Zitat von rABBI
und im zweifelsfalle würde ich mal über case insensitive...
| |
Geht das über eine einfache RegEx-Kiste?
DAS klingt ja superkompliziert. :-o
|
|
|
|
|
|
|
| Zitat von Wahooka
| Zitat von rABBI
kannst ja noch einbauen, dass man bescheid bekommt, dass die antwort falsch war.
| |
| Zitat von rABBI
und im zweifelsfalle würde ich mal über case insensitive...
| |
Geht das über eine einfache RegEx-Kiste?
| |
Das einfachste waere wohl, einfach die Usereingabe und die Antworten in lowercase (strtolower) umzuwandeln und dann zu vergleichen.
|
|
|
|
|
|
kk
|
|
Code: |
$loesungen = array(
1 => 'TriggerTG',
2 => 'SirSiggi',
3 => 'Zensiert',
4 => 'Wahooka'
);
$loesungen = strtolower($loesungen);
/*....und...*/
$userEingabe = strtolower($userEingabe);
|
|
Oder muss ich die loesungen-Variable anders umwandeln, weil sie ein array ist?
|
|
|
|
|
|
|
if (levenshtein(strtolower($usereingabe),strtolower($lösung))<=2) { return "sieg!"; } sollte wohl ganz gute ergebnisse bringen.
|
|
|
|
|
|
|
| Zitat von Wahooka
|
Code: |
$loesungen = array(
1 => 'TriggerTG',
2 => 'SirSiggi',
3 => 'Zensiert',
4 => 'Wahooka'
);
$loesungen = strtolower($loesungen);
/*....und...*/
$userEingabe = strtolower($userEingabe);
|
|
Oder muss ich die loesungen-Variable anders umwandeln, weil sie ein array ist?
| |
Weil es ein Array ist musst du das mit
$loesung = strtolower($loesungen[$_SESSION['level']]);
machen und dementsprechend auch den if-Bedingung abaendern
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Zensiert am 21.03.2008 15:45]
|
|
|
|
|
|
anmerkung: man will so sachen wie "strtolower" normalerweise nur für vergleiche heranziehen und nicht auf komplette arrays anwenden. grund nummer eins: performance. warum bei jedem scriptaufruf 200 items konvertieren anstatt nur die beiden zu vergleichenden und grund nummer zwei: man verliert information. das kann man bewusst machen, weil man sich eine unschärfe bei ner vergleichsoperation wünscht, aber man will sich das unterscheidungsmerkmal von informationen eigentlich immer so lange wie möglich aufheben.
|
|
|
|
|
|
=>
|
Guter Ansatz.
Wenn ich aber aus:
if ($userEingabe == $loesungen[$_SESSION['level']]) {
...ein:
if (levenshtein(strtolower($userEingabe),strtolower($loesungen[$_SESSION['level']]))<=2) {
...mache, kommt er nicht mehr mit dem Level parat.
Er zieht sich schliesslich aus der Position des Antwort-arrays die Level-ID heraus.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |