Da ich nur (fortgeschrittener?) Anfänger in PHP bin: Was sollte man denn stattdessen nutzen? Lieber Require()? Und was ist denn an include() so unelegant?
...
Ich include hier eine .html Datei. include() interessiert die Dateiendung aber nicht, ein <?php ?> Block wird immer ausgeführt (auch wenns ne .txt Datei ist). In einer .html Datei hat sowas aber nix zu suchen, und es wäre wahrscheinlich auch nicht erwünscht, dass solche Blöcke ausgeführt werden. Also wäre echo file_get_contents('navigation.html'); wesentlich eleganter, da es verhindert, dass ein Angreifer sich den eventuell variablen Dateinamen zu Nutzen macht um eine PHP Datei auszuführen, die er vorher auf den Server eingeschleust hat. Frag mich nicht wie, aber es geht ums Prinzip
require() würde ich da nicht benutzen. Lieber ein if(include('navigation')) { ... }, um evtl. eine geeignete Fehlermeldung anzuzeigen, die keine Daten preisgibt, die der Benutzer nicht sehen soll. require() würde ich nur für PHP Dateien benutzen, die Funktionen und Klassen enthalten, die für die spätere Ausführung gebraucht werden und im Allgemeinen nicht fehlen sollten.
Wo ist hier der SQL Fehler?
Das ist die SQL, die mit mysql_query($SQL, $DBVerbindung); geupdatet werden soll.
Warum gibt er folgenden Fehler aus?
--
Ich widerspreche der Nutzung oder Übermittlung meiner Daten für Werbezwecke oder für die Markt- und Meinungsforschung (§ 28 Absatz 3 und 4 Bundesdatenschutzgesetz).
Ich widerspreche der Nutzung oder Übermittlung meiner Daten für Werbezwecke oder für die Markt- und Meinungsforschung (§ 28 Absatz 3 und 4 Bundesdatenschutzgesetz).
Hallo allerseits, hab ne kurze Frage.
Ich wollt mir mal ein "Wer ist Online?" Script erstellen, bei dem alle registrierten Benutzer erfasst werden, die gerade online sind.
Da hab ich mir gedacht, dass ich in der Usertabelle in der DB das Attribut "Online" hinzufüge, und auf die index.php ein Script packe, welches jedes mal den Wert 1 einträgt.
Naja und letztendlich werden alle User gezählt, deren "Online" Wert "1" beträgt.
Sollte soweit klappen, nur weiß ich nicht, wie man nach einer gewissen Zeit wieder 0 eintragen kann, sofern der User nicht mehr aktiv ist
Bei der Variante bräuchtest du noch ein Extra-Feld des Typs Timestamp "Letzte Aktion". Bei jedem Aufruf der Seite (oder auch jedem zehnten, wenn das genügend sind), resettest du dann alle Online-Flags von Usern, deren letzte Aktion schon länger als x Minuten her ist.
Kannst aber auch gleich eine neue Tabelle nehmen, dann brauchst du nur User ID und Timestamp und löschst die Einträge der Nicht-Aktiven einfach. Kann aber nicht sagen, was performanter ist, das müsstest du ausprobieren, wenn's dir drauf ankommt. Viel Arbeit ist's eh nicht.
--
A human is a system for converting dust billions of years ago into dust billions of years from now via a roundabout process which involves checking email a lot.
Ich werd hier noch bekloppt, ich verstehe einfach nicht warum mir der http://validator.w3.org/ kein richtiges UTF-8 Encoding ausgibt.
Bekomme immer diese Meldung:
Zitat
The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the XML declaration (utf-8). I will use the value from the HTTP header (iso-8859-1).
...
So und hier der Quelltext:
Koennt ihr mir da weiterhelfen? Werd hier bald kirre.
Steht ja eh schon in der Meldung: im HTTP-Header wird statt utf-8 iso-8859-1 als Encoding angegeben.
Das ist leider immer ein ziemliches Problem, hängt nicht an der HTML-Datei sondern am Server. Als Ausweg gibt es zwei Möglichkeiten:
Entweder du darfst vom Anbieter aus .htaccess-Dateien erstellen (und der Server verwendet Apache), dann kannst du dort einstellen, dass HTML-Dateien allgemein, oder die Datei im Speziellen, als utf-8 ausgeliefert werden sollen.
Oder du darfst PHP-Dateien verwenden, dann könntest du eine erstellen, die zuerst header('Content-Type: text/html; charset: utf-8'); aufruft und dann die jeweilige Datei ausgibt, was allerdings ein Performanceverlust wäre.
In die .htaccess-Datei müsste folgendes:
--
A human is a system for converting dust billions of years ago into dust billions of years from now via a roundabout process which involves checking email a lot.
Hallo !
Ich stehe vor folgendem Problem:
Ich möchte gern ein PN Script (Ohne PN Anzeige) kreieren, dafür allerdigns nur eine einzige Datei verwenden.
Das heißt, dass sowohl der DB-Eintrag, also auch die Anzeige des Formulars in eine Datei gebracht werden müssen.
Soweit kein Problem, ich benutze ein verstecktes Inputfeld, in welchem eine bestimmter Wert übergeben wird.
Beim Absenden der Nachricht wird überprüft, ob der genannte Wert vorhanden ist, und sofern er es ist, führt die Datei den Eintrag-Part durch; ist er es nicht, wird das Formular angezeigt.
Nur ist mein Problem, was wohl auch ein albekanntes darstellt, dass man nach dem erfolgreichen Eintrag F5 drückt und ein zweiter Eintrag durchgeführt werden kann, was ich gerne verhinden möchte.
Eigentlich wäre das auch kein Problem, da ich wieder die Methode des versteckten Inputfeldes verwenden könnte, was sonst auch immer geklappt hat.
Nun habe ich allerdings die Schwierigkeit, dass der Script sich eben in einer Datei befindet, demnach werden also 2 solcher Inputs verwendet, was logischerweise das Überprüfen per if unmöglich macht.
Zum Verständnis nochmal der Code (ohne F5 Sicherheit)
Entweder du machst eine Zeitsperre über die Session rein oder Aktions-IDs.
Im ersten Fall speicherst du beim Absenden des Formulars den aktuellen Timestamp in der Session ab und überprüfst den halt:
Im anderen Fall generierst du eine ID, wenn das Formular angezeigt wird, der dann mit dem Formular verschickt wird. Mithilfe von diesem Wert kannst du dann überprüfen, ob das Formular bereits abgeschickt wurde:
Ich hoffe das hilft dir weiter...