|
|
|
|
Ich habe sie nicht überschrieben. Puh.
|
|
|
|
|
|
|
Sendet der Googlebot sowas wie einen "Accept-language: xyz"-Header (oder wie immer das heißt) mit, den man für sowas ausnutzen könnte?
|
|
|
|
|
|
|
| Zitat von Ashtray
Hat er denn ne andere Wahl als Sessions zu setzen/benutzen?
| |
klar, gibt auch nen default
so, jetzt aber gute nacht
|
|
|
|
|
|
|
Ich geh auch, hab kein Bock mehr auf Ubuntu weiter einrichten. Nachdem ich einen Windows-Treiber für ext2 installiert hab, hat mein Computer jedes Mal neugestartet wenn ich ein Truecrypt-Volume eingebunden hab und ich hab immer noch nicht rausgefunden, ob ich mir mit der Super Grub Disk den Truecrypt-Bootmanager zerschieße. Gute Nacht
|
|
|
|
|
|
|
|
|
|
|
| Zitat von GH@NDI
Der Salat stirbt!
| |
Wird er gekreuzigt? Ahahaha.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SkunkyVillage am 22.03.2008 1:42]
|
|
|
|
|
|
| Zitat von kinglui69
| Zitat von Ashtray
Hat er denn ne andere Wahl als Sessions zu setzen/benutzen?
| |
klar, gibt auch nen default
so, jetzt aber gute nacht
| |
Wenn du gut bist kann man auch (unabhängig von Browser, OS, Herkunftsland und Region) die Sprache wechseln. Am besten per permanentem link.
Dann indiziert der googlebot das natürlich auch!
|
|
|
|
|
|
|
|
|
|
|
Morgen.
Mir fiel grade ein, dass ich noch dringend ein Geschenk für meine Schwester brauch.
|
|
|
|
|
|
|
| Zitat von Ashtray
| Zitat von kinglui69
| Zitat von Ashtray
Hat er denn ne andere Wahl als Sessions zu setzen/benutzen?
| |
klar, gibt auch nen default
so, jetzt aber gute nacht
| |
Wenn du gut bist kann man auch (unabhängig von Browser, OS, Herkunftsland und Region) die Sprache wechseln. Am besten per permanentem link.
Dann indiziert der googlebot das natürlich auch!
| |
ja, das kann man gewissermaßen ja auch. Durch klick bzw auswahl im dropdown kann die sprache gewechselt werden. aber die url sieht in dem sinne nicht anders aus, weil die Sprache dann über ne Session gesetzt wird. Und dann sieht es wohl schon wieder anders aus, weil google jede url ja nur einmal indiziert. D.h. ich bräuchte die Sprache als Parameter in der url und darauf wollte ich egtl verzichten :/
|
|
|
|
|
|
|
Guten Morgen
|
|
|
|
|
|
|
achja, Guten Morgen
|
|
|
|
|
|
404 - Seite nicht gefunden
|
Mich hat gestern ein PHP-Problem noch weitere zwei Stunden vom Bett abgehalten. 404-Fehlerseiten, die Includes und absolute Links beinhalten.
Bei html musste ich nur...
ErrorDocument 404 /404.html
...verwenden und die Links indieser Datei mit...
/Link.html
...absolut festlegen und er rief die Datei von jedem Punkt der Website auf und kam immer mit den Links klar.
Meine PHP-Variante mit...
ErrorDocument 404 /index.php?page=404
...nahm er zwar, aber nur, wenn der Fehler im Root-Verzeichnis passiert ist, sonst hat er das /index.php?page=404 nur an das jeweilige Unterverzeichnis meiner Website drangehängt.
Mit...
ErrorDocument 404 http://wahooka.net/index.php?page=404
...nahm er zwar die Fehlerseite von jedem Verzeichnis aus an, aber leider sendete der Header keinen 404-Fehler mehr, sondern ein 200 OK - ein sogenannter Soft 404 Error, wie ich es mir dann ergooglet habe.
Mein Kopf rauchte also und ich hab mir im Netz die Finger blutig getippt und alle Suchmaschinen befragt, bis ich im PHP-Manual folgendes gefunden habe:
|
Code: |
<?php
$times = substr_count($_SERVER['PHP_SELF'],"/");
$rootaccess = "";
$i = 1;
while ($i < $times) {
$rootaccess .= "../";
$i++;
}
include ($rootaccess."foo/bar.php");
?>
|
|
Quelle
Das sieht elegant aus und leitet auch jeglichen (unterverzeichnis)Link wieder auf den root, aber ich werde das Gefühl nicht los, daß es doch irgendwie einfacher gehen muss.
@kris: Die letzten Versionen des Riddle-Scripts kann ich nicht mehr ganz nachvollziehen.
|
|
|
|
|
|
Ergänzung im eigenen Post
|
Achja: Guten Morgen alle zusammen!
|
|
|
|
|
|
|
| Zitat von Wahooka
@kris: Die letzten Versionen des Riddle-Scripts kann ich nicht mehr ganz nachvollziehen.
| |
Was ich geaendert habe ist, dass jetzt anstatt der Antwort, das Level im Cookie gespeichert wird, damit man den Browser auch schliessen kann und dann trotzdem das letzte Level geladen wird.
Das hat vorher nicht wirklich funktioinert, weil z.B. die Antwort vom dritten Level im Cookie stand, es aber mit der Antwort des ersten Level abgeglichen wurde und das natuerlich fast immer dann falsch ist.
Alte Abfrage (Zeile 27):
|
PHP: |
<?php
if (!isset($_SESSION['level'])) {
$_SESSION['level'] = 1;
}
?>
|
|
wurde abgeaendert in (Zeile 26):
|
PHP: |
<?php
if (!isset($_SESSION['level']) and isset($_COOKIE['level'])) {
$_SESSION['level'] = $_COOKIE['level'];
} elseif (!isset($_SESSION['level'])) {
$_SESSION['level'] = 1;
}
?>
|
|
Was hier gemacht wird, ist relativ einfach. Ich gucke, ob in der Session das Level nicht gesetzt ist, dafuer aber im Cookie. Wenn das der Fall ist, speichere ich den Wert aus dem Cookie in der Session, um dann spaeter das passende Level im Switch Block zu laden. Falls in der Session und im Cookie kein Levelwert gespeichert ist, kann man davon ausgehen, dass wir das erste Level laden koennen.
Die zweite Aenderung, die ich vorgenommen habe, die sich dann zwangsweise ergibt: da im Cookie ja nicht mehr das Passwort gespeichert ist, brauchen wir den elseif-Teil aus der Abfrage in Zeile 50 nicht mehr, da wir nur noch den Wert des Posts ueberpruefen
Alter Code (Zeile 44):
|
PHP: |
<?php
/* Nun ueberpruefen wir, ob der Benutzer eine Loesung abgeschickt hat */
if (isset($_POST['password'])) {
$userEingabe = $_POST['password'];
}
/* wenn keine Anwort ueber das Formular abgeschickt wurde, koennte sich
* eine Antwort evtl. noch im Cookie befinden
*/
elseif (isset($_COOKIE['password'])) {
$userEingabe = $_COOKIE['password'];
}
/* Da weder etwas im Formular noch im Cookie stand, wurde keine Eingabe
* vorgenommen und wir setzen die Variabel einfach auf leer
*/
else {
$userEingabe = '';
}
?>
|
|
Und passend dazu der neue Teil (Zeile 45):
|
PHP: |
<?php
/* Nun ueberpruefen wir, ob der Benutzer eine Loesung abgeschickt hat */
if (isset($_POST['password'])) {
$userEingabe = $_POST['password'];
}
/* Da nichts im Formular stand, wurde keine Eingabe
* vorgenommen und wir setzen die Variabel einfach auf leer
*/
else {
$userEingabe = '';
}
?>
|
|
Wie vorhin schon gesagt, dass einzige was ich dort entfernt habe, ist eben den elseif Block fuer die Abfrage des Cookies.
Die letzte Aenderung die ich vorgenommen habe, ist dann das eigentlich setzen des neuen Levels, wenn die abgeschickte Eingabe mit dem Passwort im Array uebereinstimmt.
Alter Code (Zeile 86):
|
PHP: |
<?php
@setcookie('password', $loesungen[$_SESSION['level']], 60*60*24*7);
?>
|
|
Und der neue (Zeile 81):
|
PHP: |
<?php
@setcookie('password', $_SESSION['level'], 60*60*24*7);
?>
|
|
Auch wieder hier der Unterschied, da wir ja nun nicht mehr das Passwort aus dem Array ($loesungen[$_SESSION['level']]) speichern wollen, sondern das Level in dem sich der Benutzer befindet ($_SESSION['level']).
Das ganze auf caseinsentive umzustellen ist nun gar nicht mehr schwer, da wir uns das Level nicht mehr ueber array_keys aus dem Array holen muessen, sondern wir koennen jetzt einfach den aktuellen Levelwert in der Session um eins erhoehen. Dazu aendern wir die komplette if-Bedingung, die in Zeile 58 steht folgendermassen ab:
Ganz neuer Code:
|
PHP: |
<?php
/* Erst fragen wir ab, ob der Benutzer eine Eingabe vorgenommen hat */
if (!empty($userEingabe)) {
/* Wir wandeln die Benutzereingabe und den Wert im Array in Kleinbuchstaben um */
$userEingabe = strtolower($userEingabe);
$loesung = strtolower($loesungen[$_SESSION['level']]);
/* Um dann die Eingabe mit der passenden Antwortmoeglich abzugleichen */
if (levenshtein(strtolower($userEingabe), strtolower($loesung))<=2) {
/* Die Antwort ist richtig */
/*
* Da wir ja das aktuelle Level immer in der Session mitspeichern, auch wenn der Benutzer
* den Browser geschlossen hat (Level wird aus Cookie geladen) koennen wir nun einfach
* den Levelwert um eins erhoehen. $_SESSION['level']++ ist die Kurzschreibweise von:
* $_SESSION['level'] = $_SESSION['level'] + 1
*/
$_SESSION['level']++;
/*
* Und speicher das Level in einem Cookie, der eine
* Lebensdauer von einer Woche hat
*/
@setcookie('password', $_SESSION['level'], 60*60*24*7);
}
}
?>
|
|
Ich hoffe das funktioniert nun so auch wirklich alles, wie ich mir das vorstelle. Wenn noch irgendwas unklar sein sollte, einfach eben Fragen
|
|
|
|
|
|
|
Sonst koennte ich dir das auch eben via Skype Schritt fuer Schritt erklaeren
|
|
|
|
|
|
|
Bin erstmal in der Stadt. Kannst dich ja einfach eben per ICQ melden, wenn noch Erklaerungsbedarf besteht
|
|
|
|
|
|
|
|
|
|
w00t
|
Soweit kann ich folgen, Kris - der Code wird immer verständlicher und vor allen Dingen schlüssiger. Ich finde es total faszinierend, daß man - sobald die Logik im Kopf einsetzt - einen recht schlanken Code verwenden kann und der ganze Kram dann auch funktioniert. Schwierig ist halt, daß einem zu Beginn die ganzen passenden PHP-Befehle fehlen und das PHP-Manual sich nicht gerade durch übersichtlichkeit auszeichnet...
An einer Stelle habe ich noch ein Verständnisproblem:
if (levenshtein(strtolower($userEingabe), strtolower($loesung))<=2)
...heißt das, zwei Buchstaben sind "austauschbar"/"werden missachtet"? Kann ich das mit <=1 oder <=3 verringern/erweitern?
Ich muss mir gerade nochmal ansehen, ob das mit den Cookies klappt.
Danke schonmal!!
/edit: Jo, sieht so aus. Anstelle von "Wahooka" nimmt er sogar "hooka" - oder anstelle von "TriggerTG" nimmt er "triggerPS"... :D Das muss ich grad mal auf <=1 stellen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Wahooka am 22.03.2008 11:36]
|
|
|
|
|
|
|
|
|
|
Wollt ich nur mal gesagt haben.
|
|
|
|
|
|
|
Darüber machst du dir also den ganzen lieben Tag Gedanken
|
|
|
|
|
|
|
Irgendwer muss es ja machen
|
|
|
|
|
|
|
| Zitat von Wahooka
An einer Stelle habe ich noch ein Verständnisproblem:
if (levenshtein(strtolower($userEingabe), strtolower($loesung))<=2)
...heißt das, zwei Buchstaben sind "austauschbar"/"werden missachtet"? Kann ich das mit <=1 oder <=3 verringern/erweitern? | |
Siehe dazu wiki:Levenshtein-Distanz
Die Distanz gibt einfach an wie viele Buchstaben man ersetzen muss, um von Wort A nach B zu kommen und umgekehrt. Googles und Amazons "meinten sie: xxx" benutzen sowas auch.
|
|
|
|
|
|
|
Wir müssen noch analysieren warum derzeitig soeine FLaute hier im GS herrscht.
Tagsüber wo normalerweise mindestens 10 GSler (laut meiner Buddyliste) online sind, sind es zZt. nur noch etwa 3
|
|
|
|
|
|
|
tag..
|
|
|
|
|
|
|
Ah, da ist ja schon der Hauptgrund
|
|
|
|
|
|
|
bin aber auch schon wieder weg..
wollte nur mal kurz hallo sagen
cya
|
|
|
|
|
|
|
| Zitat von TriggerTG
Wir müssen noch analysieren warum derzeitig soeine FLaute hier im GS herrscht.
Tagsüber wo normalerweise mindestens 10 GSler (laut meiner Buddyliste) online sind, sind es zZt. nur noch etwa 3
| |
Also ich fuer meinen Teil muss in einer Woche mehrere Sachen abgeben und wenn ich mal Zeit habe dann verschwende ich die irgendwie immer mit irgendwelchen Spielen
|
|
|
|
|
|
|
Larry 8: Magna Cum Laude ist übrigens ein scheißspiel. Die hätten dadraus mal n richtiges adventure machen sollen.
Das Ganze Spiel besteht nämlich aus Minispielen (wo man tastenkombinationen wie bei guitarhero etc. drücken muss), mit dem Ziel, Tussis flachzulegen.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |