Nächste Runde - Gästebuchscript
KD-one
- php
Hi alle,
Ich hab nun endlich nach den letzten Kritiken mal Zeit gefunden, das Script m.E. zu verbessern.
Nachdem ich nun doch kein PHP-Könner bin, bitte ich diejenigen, die Ahnung von der Materie haben, sich mal das Script anzusehen und mir zu sagen, ob ich da eventuell Fehler oder Fallen eingebaut habe.
Ich bin natürlich auch an Verbesserungsvorschlägen interessiert, das Script soll aber weiterhin auf Files und nicht auf einer Datenbank basieren.
http://faq.united-web.at/guestbook/gaestebuch.phps
PS.: Es sind immer noch Reste des alten, nicht von mir stammenden Scriptes im Code vorhanden, wenn euch also Unstimmigkeiten auffallen, welche ich übersehen habe, bitte anmerken. ;-)
Gruß
Kurt
Moin!
das was mir aufgefallen ist, du solltest mit einem regulären ausdruck noch überprfüfen, od die mailadresse, sofern eingegeben, ein gültiges format hat.
tschüssi ichen
Hi ichen,
das was mir aufgefallen ist, du solltest mit einem regulären ausdruck noch überprfüfen, od die mailadresse, sofern eingegeben, ein gültiges format hat.
Ach ja, reguläre Ausdrücke, mein Lieblingsthema... :o)
Naja, das Script soll ja noch weiter ausgebaut werden, da wird dann wohl mal das Gebiet der regulären Ausdrücke auch fällig... :-/
Danke für's nachschauen.
Gruß
Kurt
Hallo KD,
Man kann bei Dir leere Postings abschicken, indem man Leerzeichen in die Felder einträgt.
Warum verwendest Du 'send_status' statt einfach auf 'eintragen' zu prüfen?
Und wie sieht es mit neuladen nach dem Abschicken eines Postings aus? Vermehren sich da die Einträge?
Gruß, Andreas
Hi Andreas,
Man kann bei Dir leere Postings abschicken, indem man Leerzeichen in die Felder einträgt.
Jep, stimmt. Wie könnte man das ausschliessen, respektive worauf prüfen?
Warum verwendest Du 'send_status' statt einfach auf 'eintragen' zu prüfen?
Das ist noch ein Fragment aus dem alten Script, danke daß du mich darauf aufmerksam gemacht hast. Ich werde das demnächst ändern.
Und wie sieht es mit neuladen nach dem Abschicken eines Postings aus? Vermehren sich da die Einträge?
Jep, leider.
Wie könnte man das vermeiden, ohne gleich mit Sessions zu arbeiten?
(Hab noch nie damit was gemacht, kenn mich also null damit aus).
Gruß
Kurt
Moin!
Und wie sieht es mit neuladen nach dem Abschicken eines Postings aus? Vermehren sich da die Einträge?
Jep, leider.
Wie könnte man das vermeiden, ohne gleich mit Sessions zu arbeiten?
(Hab noch nie damit was gemacht, kenn mich also null damit aus).
frage ab, ob ein eintrag mit gleichem text, name, mail etc. schon vorhanden ist.
wenn ja, wird eine fehlermeldung ausgegeben, wenn nicht wird der eintrag eingetragen.
tschüss ichen
Hi ichen,
frage ab, ob ein eintrag mit gleichem text, name, mail etc. schon vorhanden ist.
wenn ja, wird eine fehlermeldung ausgegeben, wenn nicht wird der eintrag eingetragen.
Ja, das wäre eine Möglichkeit. Dazu bräuchte ich aber im File eindeutige Trenner, über die ich mir demnächst sowieso Gedanken machen muss, da ich noch eine automatische Blätterfunktion einbauen möchte.
Das wird also eher Zukunftsmusik. :-)
Danke für den Tip!
Gruß
Kurt
Man kann bei Dir leere Postings abschicken, indem man Leerzeichen in die Felder einträgt.
Jep, stimmt. Wie könnte man das ausschliessen, respektive worauf prüfen?
#wenn kein druckbares Zeichen gefunden wird, sondern allenfalls whitespaces oder nichts
if(!preg_match("/\S/", $antwort))
{
#zuruek zur Seite, evtl. Fehlermeldung
}
else
{
#trage Beitrag ein
}
Und wie sieht es mit neuladen nach dem Abschicken eines Postings aus? Vermehren sich da die Einträge?
Jep, leider.
Wie könnte man das vermeiden, ohne gleich mit Sessions zu arbeiten?
(Hab noch nie damit was gemacht, kenn mich also null damit aus).
Brauchst Du auch nicht. Trenne auslesen und schreiben der Datei. Wenn die Datei geschrieben wurde, leite wieder zum Ausgangsscript (lesen und ausgeben) weiter. Dann existiert die POST-Anfrage nicht mehr.
Gruß, Andreas
Hi Andreas-Lindig,
#wenn kein druckbares Zeichen gefunden wird, sondern allenfalls whitespaces oder nichts
if(!preg_match("/\S/", $antwort))
Nun, ich hab das mal eingebaut, aber die Prüfung wird entweder nicht durchgeführt, oder aber das Ergebnis einfach übergangen.
if (!isset($_POST['name']) || !isset($_POST['nachricht'])) {
@readfile("guestbook/speicher.txt");
} else if (!empty($POST['name']) || !empty($POST['nachricht'])) {
if(!preg_match("/\S/",$name)) {
echo "<p>Der Name darf nicht nur aus Leerzeichen bestehen!</p>";
@readfile("guestbook/speicher.txt");
exit;
} else if(!preg_match("/\S/",$nachricht)) {
echo "<p>Die Nachricht sollte etwas mehr als nur Leerzeichen enthalten!</p>";
@readfile("guestbook/speicher.txt");
exit;
}
} else if ((isset($_POST['name']) && $_POST['name'] == "") || (isset($_POST['nachricht']) && $_POST['nachricht'] == "")) {
echo "<p>Name und Kommentar müssen ausgefüllt werden!<br>Bitte geben sie diese Daten korrekt ein!</p>";
@readfile("guestbook/speicher.txt");
} else if (isset.......
Es ist nach wie vor möglich Posts mit nur Leerzeichen in den Feldern Name und Nachricht abzuschicken. Das komplette Script kann man hier besichtigen:
http://faq.united-web.at/guestbook/gaestebuch.phps
Und wie sieht es mit neuladen nach dem Abschicken eines Postings aus? Vermehren sich da die Einträge?
Jep, leider.
Wie könnte man das vermeiden, ohne gleich mit Sessions zu arbeiten?
(Hab noch nie damit was gemacht, kenn mich also null damit aus).Brauchst Du auch nicht. Trenne auslesen und schreiben der Datei. Wenn die Datei geschrieben wurde, leite wieder zum Ausgangsscript (lesen und ausgeben) weiter. Dann existiert die POST-Anfrage nicht mehr.
Spätestens hier wird leider eine völlige Umstrukturierung des Scriptes nötig. *seufz*
Das wird aber eine Weile dauern. Trotzdem Danke für den Tip, jetzt weiss ich wenigstens, wie ich es angehen sollte.
Gruß
Kurt
Hallo
} else if (!empty($POST['name']) || !empty($POST['nachricht'])) {
hier ist schon mal ein Fehler :-)
Hi Badboy46,
Hallo
} else if (!empty($POST['name']) || !empty($POST['nachricht'])) {
hier ist schon mal ein Fehler :-)
Nein, zwei! ;-)
Gruß
Kurt
Hallo
} else if (!empty($POST['name']) || !empty($POST['nachricht'])) {
hier ist schon mal ein Fehler :-)
Nein, zwei! ;-)
ich hab es als ein und den selber Fehler angesehen :-P
Hi Andreas,
Schande über mich, das kann ja nicht funktionieren, wenn ich die Superglobale "$_POST" falsch schreibe... :-/
Jetzt gehts! ;-)
Danke dir!
Gruß
Kurt
Hi alle,
Auf ichens Rat hin hab ich nun auch eine E-Mailprüfung eingebaut, funktioniert eigentlich.
Könnt Ihr drüber schauen, ob die Syntax sowie auch der reguläre Ausdruck noch verbesserungsfähig wären?
Scriptauszug:
if (!empty($_POST['email'])) {
if(!eregi("[1]([-_.]?[0-9a-zA-Z])*@0-9a-zA-Z*\.[a-zA-Z]{2,6}$",$email)) {
echo "<p>Bitte geben sie eine gültige oder keine e-mailadresse ein!</p>";
@readfile("guestbook/speicher.txt");
exit;
}
}
http://faq.united-web.at/guestbook/gaestebuch.phps
Übrigens, der Teil ist nun auch in der PHPS eingebaut. :-)
Gruß
Kurt
0-9a-zA-Z ↩︎
Hallo
if(!eregi("[1]([-_.]?[0-9a-zA-Z])*@0-9a-zA-Z*\.[a-zA-Z]{2,6}$",$email))
http://de3.php.net/eregi
du untercheidest nicht zwischen Gross und Kleinschreibung, also warum überprüfst du dann auf 'a-zA-Z' ?! ;-)
0-9a-zA-Z ↩︎
Hi Badboy46,
if(!eregi("[1]([-_.]?[0-9a-zA-Z])*@0-9a-zA-Z*\.[a-zA-Z]{2,6}$",$email))
http://de3.php.net/eregi
du untercheidest nicht zwischen Gross und Kleinschreibung, also warum überprüfst du dann auf 'a-zA-Z' ?! ;-)
Öhm ja, wie ich sagte, Anfänger... :o)
Folglich bleiben, wenn ich richtig verstanden habe, 2 Möglichkeiten:
if(!ereg("[2]([-_.]?[0-9a-zA-Z])*@0-9a-zA-Z*\.[a-zA-Z]{2,6}$",$email))
oder
if(!eregi("[3]([-_.]?[0-9a-z])*@0-9a-z*\.[a-z]{2,6}$",$email))
Sehe ich das nun so richtig?
Gruß
Kurt
Hi Badboy46,
das macht meines wissens auch nicht viel Sinn *g*
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)
Naja, ob Sinn oder nicht, es funktioniert so auch, wenn auch etwas umständlicher als mit der von dir genannten Syntax. ;-)
Übrigens, ist deine Zeile nun auf "ereg" bezogen, ja?
Die anführungszeichen gehören hier nicht zur Syntax, oder? Zumindest habe ich hier http://de3.php.net/manual/de/pcre.pattern.syntax.php keine Entsprechung gefunden.
Wozu dient das "+" am Ende der Zeichenkette? Das hab ich trotz Lektüre nicht ganz verstanden, denn offensichtlich funktioniert es doch ganz ohne auch, siehe mein Ursprungsposting.
Gruß
Kurt
Hi Badboy46,
das macht meines wissens auch nicht viel Sinn *g*
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)Naja, ob Sinn oder nicht, es funktioniert so auch, wenn auch etwas umständlicher als mit der von dir genannten Syntax. ;-)
Übrigens, ist deine Zeile nun auf "ereg" bezogen, ja?
ups, das "A-Z" muss natürlich weg :-(
Die anführungszeichen gehören hier nicht zur Syntax, oder? Zumindest habe ich hier http://de3.php.net/manual/de/pcre.pattern.syntax.php keine Entsprechung gefunden.
nein die gehören da nicht hin, ich hab das ganze einfach in Anführungszeichen gesetzt, damit man sehen kann, wo es anfängt bzw. aufhört
Wozu dient das "+" am Ende der Zeichenkette? Das hab ich trotz Lektüre nicht ganz verstanden, denn offensichtlich funktioniert es doch ganz ohne auch, siehe mein Ursprungsposting.
* => tritt mindestens 0 mal auf
Beispiel
String = "Z"
wenn du nun "[a-g]*" verwendest, trifft dieser Ausdruck zu, da die Buchstaben "a-g" vorkommen können aber nicht müssen
http://de3.php.net/pcre.pattern.syntax
http://de3.php.net/pcre.pattern.syntax
so soll es natürlich aussehen ;-)
Hi Badboy46,
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)
Naja, ob Sinn oder nicht, es funktioniert so auch, wenn auch etwas umständlicher als mit der von dir genannten Syntax. ;-)
Übrigens, ist deine Zeile nun auf "ereg" bezogen, ja?ups, das "A-Z" muss natürlich weg :-(
Aha, das hat mich ein wenig verwirrt...
Die anführungszeichen gehören hier nicht zur Syntax, oder? Zumindest habe ich hier http://de3.php.net/manual/de/pcre.pattern.syntax.php keine Entsprechung gefunden.
nein die gehören da nicht hin, ich hab das ganze einfach in Anführungszeichen gesetzt, damit man sehen kann, wo es anfängt bzw. aufhört
Wozu dient das "+" am Ende der Zeichenkette? Das hab ich trotz Lektüre nicht ganz verstanden, denn offensichtlich funktioniert es doch ganz ohne auch, siehe mein Ursprungsposting.
* => tritt mindestens 0 mal auf
- => tritt mindestens einmal auf
Beispiel
String = "Z"
wenn du nun "[a-g]*" verwendest, trifft dieser Ausdruck zu, da die Buchstaben "a-g" vorkommen können aber nicht müssen
Ok, nun hab ich auch kapiert, warum es bei mir funktioniert, aber nicht immer funktionieren muss. ;-)
http://de3.php.net/pcre.pattern.syntax
Danke
Gruß
Kurt
Hallo
Ok, nun hab ich auch kapiert, warum es bei mir funktioniert, aber nicht immer funktionieren muss. ;-)
ich überprüfe eMails so
!eregi('^([a-z0-9.\_-]+)@([a-zäöü0-9.-]+.[a-z]{2,})$', $eMail)
Hi Badboy46,
ich überprüfe eMails so
!eregi('^([a-z0-9.\_-]+)@([a-zäöü0-9.-]+.[a-z]{2,})$', $eMail)
Wozu setzt du zusätzlich die ausdrücke nochmals in Klammern?
Gibt es einen besonderen Grund, warum du den max-Quantifier nicht angegeben hast?
Gruß
Kurt
Hallo
ich überprüfe eMails so
!eregi('^([a-z0-9.\_-]+)@([a-zäöü0-9.-]+.[a-z]{2,})$', $eMail)Wozu setzt du zusätzlich die ausdrücke nochmals in Klammern?
ist schon ne Weile her, als ich das erstellt habe, ich nehme aber an, wegen der Übersichtlichkeit :)
Gibt es einen besonderen Grund, warum du den max-Quantifier nicht angegeben hast?
jo, dann brauch ich das nicht abändern, wenn es eine Domainendung > 6 gibt
ob du das auf 6 Zeichen begrenzt oder nicht, ist glaube ich relativ egal ;-)
Hi Badboy46,
Ok, danke nochmals, sämtliche Klarheiten beseitigt. ;-)
Gruß
Kurt
Hi Badboy46,
So, nun hab ich die Syntax so abgeändert:
if (!empty($_POST['email'])) {
if(!eregi("[1]+@[a-z0-9.\_-]+\.[a-z]{2,6}$",$email)) {
echo "<p>Bitte geben sie eine gültige oder keine E-Mailadresse ein!</p>";
@readfile("guestbook/speicher.txt");
exit;
}
}
Nach meinem Verständnis müsste es nun passen.
Nochmals Danke.
Gruß
Kurt
a-z0-9.\_- ↩︎
Hi Badboy46,
if(!eregi("[1]([-_.]?[0-9a-z])*@0-9a-z*\.[a-z]{2,6}$",$email))
das macht meines wissens auch nicht viel Sinn *g*
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)
Nun, ich denke, ich habe den Grund für diese Syntax in den Tipps&Tricks(danke an CK) gefunden. Der Username darf prinzipiell alle diese Zeichen enthalten, muss aber mit [0-9a-zA-Z] beginnen.
Gruß
Kurt
0-9a-z ↩︎
Hallo
if(!eregi("[1]([-_.]?[0-9a-z])*@0-9a-z*\.[a-z]{2,6}$",$email))
das macht meines wissens auch nicht viel Sinn *g*
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)Nun, ich denke, ich habe den Grund für diese Syntax in den Tipps&Tricks(danke an CK) gefunden. Der Username darf prinzipiell alle diese Zeichen enthalten, muss aber mit [0-9a-zA-Z] beginnen.
darf denn eine eMail Adresse nicht mit ein - doer _ anfangen? *überleg*
warum "[-_.]?" warum darf höchstesn einmal auftreten?
0-9a-z ↩︎
Hi Badboy46,
das macht meines wissens auch nicht viel Sinn *g*
warum nicht gleich "[a-zA-Z0-9.\_-]+" ;-)Nun, ich denke, ich habe den Grund für diese Syntax in den Tipps&Tricks(danke an CK) gefunden. Der Username darf prinzipiell alle diese Zeichen enthalten, muss aber mit [0-9a-zA-Z] beginnen.
darf denn eine eMail Adresse nicht mit ein - doer _ anfangen? *überleg*
Meines Wissens nicht, wobei das nicht der Weisheit letzter Schluss sein muss.
warum "[-_.]?" warum darf höchstesn einmal auftreten?
Nun, ich habe ja nicht das Fragezeichen an sich angesprochen *g*, ich meinte da eher die grundlegende Syntax bezüglich der Sonderzeichen. ;-)
Gruß
Kurt
in den Tips&Tricks is ein script dazu, das nehme ich immer.
Gruß, Andreas
Hi,
Könnt Ihr drüber schauen, ob die Syntax sowie auch der reguläre Ausdruck noch verbesserungsfähig wären?
Ein generelles Problem mit solchen "Ich nehme dem User Verantwortung & Denken ab"-Automatismen: Was gestern noch verboten war, ist morgen vielleicht erlaubt.
Erfreulicherweise wurde schon berücksichtigt, daß es auch längere TLDs geben kann, als die alten mit 3 Buchstaben. Aber Usern einer Domain mit Sonderzeichen (z.B. www.müller.de), bliebe hier nur die Eingabe ihres Puny-Codes ... :-/
Gruß, Cybaer
Hi Cybaer,
Ein generelles Problem mit solchen "Ich nehme dem User Verantwortung & Denken ab"-Automatismen: Was gestern noch verboten war, ist morgen vielleicht erlaubt.
Nun, die Intention ist nicht, dem User die Verantwortung zum Denken abzunehmen, sondern mich, respektive mein Gästebuch vor Spammern und Blödmännern zu schützen, soweit das überhaupt sinnvoll möglich ist.
Wo ein entsprechend starker Wille ist, ist immer auch ein Weg.
Erfreulicherweise wurde schon berücksichtigt, daß es auch längere TLDs geben kann, als die alten mit 3 Buchstaben. Aber Usern einer Domain mit Sonderzeichen (z.B. www.müller.de), bliebe hier nur die Eingabe ihres Puny-Codes ... :-/
Nun, in der Endfassung sind nun schon auch solche Fälle berücksichtigt.
Trotzdem Danke für den Hinweis.
Gruß
Kurt
Hi alle,
Ich habe nun das Script so optimiert, wie es nach meinem Verständnis geht und noch funktioniert.
http://faq.united-web.at/guestbook/gaestebuch.phps
Wenn noch jemand einen Tip hat, wie sich das Ganze vereinfachen lässt, ohne an Funktionalität zu verlieren, immer her damit! ;-)
Das Problem mit dem Reload ist zwar immer noch nicht gelöst, das wird aber vermutlich noch einige Zeit in Anspruch nehmen, deshalb habe ich das bisher aus meinen Optimierungsversuchen ausgeklammert.
Auf alle Fälle allen Beteiligten nochmals vielen Dank für die bisherige Hilfe.
Gruß
Kurt
Das Problem mit dem Reload ist zwar immer noch nicht gelöst, das wird aber vermutlich noch einige Zeit in Anspruch nehmen...
das ist nicht viel. Du mußt nur das Formular auf eine neue Seite 'schreiben.php' verweisen lassen und alles, was in Deinem jetzigen Script nach schreiben aussieht in dieses Script kopieren (auf der Hauptseite natürlich löschen, hehe). Am Ende von 'schreiben.php' einen Location-header auf 'lesen.php' und fertig.
Auf alle Fälle allen Beteiligten nochmals vielen Dank für die bisherige Hilfe.
gern geschehen (man soll ja hier was für die Umgangsformen tun, hehe)
Gruß, Andreas
Hi Andreas-Lindig,
Das Problem mit dem Reload ist zwar immer noch nicht gelöst, das wird aber vermutlich noch einige Zeit in Anspruch nehmen...
das ist nicht viel. Du mußt nur das Formular auf eine neue Seite 'schreiben.php' verweisen lassen und alles, was in Deinem jetzigen Script nach schreiben aussieht in dieses Script kopieren (auf der Hauptseite natürlich löschen, hehe). Am Ende von 'schreiben.php' einen Location-header auf 'lesen.php' und fertig.
Ja, so in etwa hatte ich mir das vorgestellt. Bleibt nur die Arbeit des "Auseinanderklamüserns"...
Auf alle Fälle allen Beteiligten nochmals vielen Dank für die bisherige Hilfe.
gern geschehen (man soll ja hier was für die Umgangsformen tun, hehe)
Stimmt, sowas kann nie schaden.
Danke.
Gruß
Kurt
Hi Andreas,
das ist nicht viel. Du mußt nur das Formular auf eine neue Seite 'schreiben.php' verweisen lassen und alles, was in Deinem jetzigen Script nach schreiben aussieht in dieses Script kopieren (auf der Hauptseite natürlich löschen, hehe). Am Ende von 'schreiben.php' einen Location-header auf 'lesen.php' und fertig.
Also, bin grade dran, das Problem Schritt für Schritt zu lösen.
Ich habe beide Dateien nun getrennt, der Aufruf funktioniert.
Als erstes wollte ich die erste Fehleingabeüberprüfung, die bei Ausführung das Script abbricht, zur Ausführung bringen.
Allerdings finde ich trotz stundenlanger Suche keinen Hinweis, wie ich von dem Script wieder auf die Ausgangsseite zurückleite und dabei einen Parameter mit übergebe:
Der relevante Code in der gaestebuch.php:
<?php
$msgerror = '';
echo '<p><b>bisherige Einträge:</b></p>';
echo $msgerror;
@readfile('../speicher.txt');
?>
Und hier der Teil aus der schreiben.php, an dem ich zur Zeit hänge:
<?php
$tname = trim($_POST['name']);
$tnachricht = trim($_POST['nachricht']);
if ((isset($_POST['name']) && empty($tname)) || (isset($_POST['nachricht']) && empty($tnachricht))) {
$msgerror = '<p>Name und Kommentar müssen ausgefüllt werden!<br>Bitte geben sie diese Daten korrekt ein!</p>';
????????("gaestebuch.php");
exit;
} [...] ?>
Also, ich hab nirgends einen Ansatz gefunden, wie ich nach Abarbeitung des Scripts auf die gaestebuch.php weiterleite und ausserdem bin ich mir nun nicht sicher, ob der definierte "$msgerror" auch übergeben und eingefügt wird.
Könntest du mir bitte eventuell einen Hnweis geben, mit welcher Funktion etc. anstatt meiner Fragezeichen *g* ich das da realisieren kann?
Gruß
Kurt
Hi Andreas,
Habe bereits den Link zu http://de.php.net/manual/de/function.header.php erhalten.
Gruß
Kurt
Hallo
wieso machst du das nicht gleich so?
empty(trim($_POST['nachricht']))
Hi Badboy46,
wieso machst du das nicht gleich so?
empty(trim($_POST['nachricht']))
Weil ich *schwitz* sowieso... ach, simma ehrlich, weil ich einfach keine Ahnung hatte, daß es so auch geht. :-)
Bei meinem derzeitigen Wissensstand brauch ich immer noch einen Kick in die rechte Richtung, um wirklich sinnvolles zu entwickeln. :-)
Allerdings muss ich dies dann vor der Abfrage auf Nulleingabe durchführen und anschliessend auf leere Felder prüfen. Dadurch würde ich allerdings mehrere Zeilen Code (alles mit preg_match) einsparen...
Einziger "Nachteil": Ich kann keine gesonderten Fehlermeldungen mehr ausgeben... :-)
Gruß
Kurt
Hallo,
wieso machst du das nicht gleich so?
empty(trim($_POST['nachricht']))Weil ich *schwitz* sowieso... ach, simma ehrlich, weil ich einfach keine Ahnung hatte, daß es so auch geht. :-)
Bei meinem derzeitigen Wissensstand brauch ich immer noch einen Kick in die rechte Richtung, um wirklich sinnvolles zu entwickeln. :-)
Übung macht den Meister, alle fangen mal so an :)
Allerdings muss ich dies dann vor der Abfrage auf Nulleingabe durchführen und anschliessend auf leere Felder prüfen. Dadurch würde ich allerdings mehrere Zeilen Code (alles mit preg_match) einsparen...
Einziger "Nachteil": Ich kann keine gesonderten Fehlermeldungen mehr ausgeben... :-)
kann man ja trotzdem, nur halt ohne dieses preg_*
empty(trim($_POST['nachricht'])) ist denke ich mal auch um einiges schneller :)
In Zeile 46 und 50 verwendets du die Variabel $name und $nachricht
das sollte sicherlich auch $_POST['name'] und $_POST['nachricht'] heissen ;-)
Hi Badboy46,
Weil ich *schwitz* sowieso... ach, simma ehrlich, weil ich einfach keine Ahnung hatte, daß es so auch geht. :-)
Bei meinem derzeitigen Wissensstand brauch ich immer noch einen Kick in die rechte Richtung, um wirklich sinnvolles zu entwickeln. :-)Übung macht den Meister, alle fangen mal so an :)
Naja, etwas mehr Zeit dafür wäre schön...
Allerdings muss ich dies dann vor der Abfrage auf Nulleingabe durchführen und anschliessend auf leere Felder prüfen. Dadurch würde ich allerdings mehrere Zeilen Code (alles mit preg_match) einsparen...
Einziger "Nachteil": Ich kann keine gesonderten Fehlermeldungen mehr ausgeben... :-)kann man ja trotzdem, nur halt ohne dieses preg_*
empty(trim($_POST['nachricht'])) ist denke ich mal auch um einiges schneller :)
Das wiederum halte ich für eine wichtige Information, man will ja schon sauber _und_ schnell sein...
In Zeile 46 und 50 verwendets du die Variabel $name und $nachricht
das sollte sicherlich auch $_POST['name'] und $_POST['nachricht'] heissen ;-)
Öhm ja, natürlich, ein Flüchtigkeitsfehler...
Danke dir.
Gruß
Kurt
Hallo,
Codetechnisch kannst du noch eine Menge machen :)
z.B. statt Anführungszeichen Hochkomma verwenden
alles was in Anführungszeichen steht, wird noch überprüft, ob da eine Variable vorkommt <--- das dauert ein paar Millisekunden
diese Überprüfung findet bei Hochkomma (')nicht statt
wird dann z.B.
das hat auch den Vorteil, dass du die ganzen " nicht escapen musst :)
Hi Badboy46,
Hallo,
Codetechnisch kannst du noch eine Menge machen :)
z.B. statt Anführungszeichen Hochkomma verwenden
alles was in Anführungszeichen steht, wird noch überprüft, ob da eine Variable vorkommt <--- das dauert ein paar Millisekunden
diese Überprüfung findet bei Hochkomma (')nicht statt
Na, dann wolln mer mal... :-)
Gruß
Kurt
Hi Badboy46,
Hallo
wieso machst du das nicht gleich so?
empty(trim($_POST['nachricht']))
Nun, ich hab das jetzt in allen möglichen Variationen durchprobiert, es funktioniert nicht.
Sobald ich den Code einsetze, liefert das Script eone leere Seite _ohne_Fehlermeldung zurück.
Ich weiss, ehrlich gesagt, nicht weiter.
if(empty(trim($_POST['nachricht']))) {
tu dies und das;
exit;
}
Wo liegt der Fehler????
Auch nach Lektüre bei http://de3.php.net/manual/de/function.trim.php und http://de3.php.net/manual/de/function.empty.php konnte ich keinen offensichtlichen Fehler im Code entdecken.
Gruß
Kurt
Hi Badboy46,
Hallo
wieso machst du das nicht gleich so?
empty(trim($_POST['nachricht']))Nun, ich hab das jetzt in allen möglichen Variationen durchprobiert, es funktioniert nicht.
Sobald ich den Code einsetze, liefert das Script eone leere Seite _ohne_Fehlermeldung zurück.
Ich weiss, ehrlich gesagt, nicht weiter.if(empty(trim($_POST['nachricht']))) {
tu dies und das;
exit;
}
$bla = trim($_POST['username']);
if(empty($bla)){
print 'tu dies und das';
}
so funktioniert es
bei mir kam die Fehlermeldung
Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE or '$' in /home/xxx/www.xxx.de/auth/test.php on line 8
frag mich nicht, was das bedeutet :)
Hi Badboy46,
$bla = trim($_POST['username']);
if(empty($bla)){
print 'tu dies und das';
}so funktioniert es
Ja, darauf hätte ich auch selbst kommen können.
bei mir kam die Fehlermeldung
Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE or '$' in /home/xxx/www.xxx.de/auth/test.php on line 8
frag mich nicht, was das bedeutet :)
Nuja, ganz ohne Fehlermeldung tu ich mir halt schwer, daraus hääte ich schon mal zumindest ablesen können, daß ihm die Syntax nicht schmeckt.
Ev. ist diese Vorgangsweise bei Superglobalen nicht zulässig?
Ich werd mal mit meinem Provider sprechen müssen, warum bei mir die Fehlermeldung unterdrückt wird.
Grundsätzlich hätte ich meins dazu getan, um informiert zu werden.
ini_set ('display_errors',true);
ini_set ('error_reporting', E_ALL);
müsste eigentlich die Fehlermeldungen anschalten, tut es aber offensichtlich nicht.
Gruß
Kurt
Hi Badboy46,
So, nun läufts! ;-)
Ich habs allerdings aufgrund der Gegebenheiten ein wenig anders gemacht:
<?php
ini_set('display_errors',true);
ini_set ('error_reporting', E_ALL);
/******************************************************************/
echo '<p><b>bisherige Einträge:</b></p>';
if (isset($_POST['name']) || isset($_POST['nachricht'])) {
$tname = trim($_POST['name']);
$tnachricht = trim($_POST['nachricht']);
}
if (!isset($_POST['name']) || !isset($_POST['nachricht'])) {
@readfile('guestbook/speicher.txt');
} else if ((isset($_POST['name']) && $tname == '') || (isset($_POST['nachricht']) && $tnachricht == '')) {
echo '<p>Name und Kommentar müssen ausgefüllt werden!<br>Bitte geben sie diese Daten korrekt ein!</p>';
@readfile('guestbook/speicher.txt');
exit;
} else if (isset($_POST['submit']) && $_POST['submit'] == 'eintragen') {......... ?>
http://faq.united-web.at/guestbook/gaestebuch.phps
Danke dir für die vielen Tips un Hilfestellungen!
Gruß
Kurt
Hallo
} else if ((isset($_POST['name']) && $tname == '') || (isset($_POST['nachricht']) && $tnachricht == '')) {
ich würde statt "$tname == ''" und "$tnachricht == ''" dieses verwenden "empty($tname)" und "empty($tnachricht)" :-)
Hi Badboy46,
} else if ((isset($_POST['name']) && $tname == '') || (isset($_POST['nachricht']) && $tnachricht == '')) {
ich würde statt "$tname == ''" und "$tnachricht == ''" dieses verwenden "empty($tname)" und "empty($tnachricht)" :-)
Jo, dat wär auch ne Möglichkeit... *g*
Scheint mir aber keine wesentlichen Vor- oder Nachteile zu bieten, oder?
Gruß
Kurt
Hallo
} else if ((isset($_POST['name']) && $tname == '') || (isset($_POST['nachricht']) && $tnachricht == '')) {
ich würde statt "$tname == ''" und "$tnachricht == ''" dieses verwenden "empty($tname)" und "empty($tnachricht)" :-)
Jo, dat wär auch ne Möglichkeit... *g*
Scheint mir aber keine wesentlichen Vor- oder Nachteile zu bieten, oder?
in deinen Fall, würde ich mal sagen nicht wirklich
das ist sicherlich auch geschmackssache :)