Ergebnis 1 bis 12 von 12

Thema: [PHP]Guestbook - Code abfrage; Textfeld nur Zahlen?; Wenn Text "xyz" kein post?

  1. #1

    [PHP]Guestbook - Code abfrage; Textfeld nur Zahlen?; Wenn Text "xyz" kein post?

    hallihallo!

    ein paar kurze fragen bezgl eines von mir erstelltn Guestbooks:

    1. ich möchte dass man nur noch posten kann wenn man vor dem senden einen 4stelligen zahlencode eingibt. wie schaff ich es eine warnung auszugeben, wenn der inhalt des textfeldes NICHT die zahlenkombination ist?

    2. kann man ein textfeld erstellen wo man nur zahlen eingeben kann?

    3. neuerdings hat ein Spambot den tollen trick dass er mir eine java weiterleitung ins kommentarfeld schreibt. sobald also die textfile mit dem inhalt geladen wird, wird mein besucher sofort wo anders hingeleitet.
    wie kann ich überprüfen lassen ob im text des textfeldes "kommentar" wörter bzw. zeichen enthalten sind?

    thx!

    p.s.
    hier mein script:
    PHP-Code:
    <?php

    $name 
    stripslashes($_POST['input_name']);
    $email $_POST['input_email'];
    $homepage $_POST['input_website'];
    $kommentar stripslashes(nl2br($_POST['input_comment']));
    $gmtime gmdate("H:i"time()+(7200)); 
    $gmdate gmdate("d.m.Y"time()+(7200));
    $code $_POST['input_code'];

    //Abfrage, ob Textarea Name leer ist und Ausgabe einer Warnung
    if (empty ($name)) {  
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Bitte geben Sie Ihren Namen ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo;&laquo; zurück</A>");}

    //Abfrage, ob Textarea Komentar leer ist und Ausgabe einer Warnung
    if (empty ($kommentar)) {  
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Bitte geben Sie einen Kommentar ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo;&laquo; zurück</A>");}

    //Abfrage, ob Textarea Code leer ist und Ausgabe einer Warnung
    if (empty ($name)) {  
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Code Falsch. Bitte geben Sie den Code ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo;&laquo; zurück</A>");}

    $txt "index_guestbook.txt";

    if(
    $homepage != "http://")
    {
    $homepage1 "<a href=\"$homepage\" target=\"_blank\">[Homepage]</a>";}

    if(
    $email != "")
    {
    $email1 "<a href=\"mailto:$email\">[E-Mail]</a>";}

    $lesen fopen("$txt""r");
    $inhalt fread($lesenfilesize($txt));
    fclose ($lesen);


    //Schreiben in die TXT-Datei
    $schreiben fopen("$txt""w");
    if(
    $schreiben){
    flock($schreiben,2);
    fputs ($schreiben"
    <b>Written by 
    $name</b>
    <b>
    $homepage1</b>
    <b>
    $email1</b> <b>on $gmdate at $gmtime</b><hr />
    $kommentar<hr />
    <br /><br />
    $inhalt");
    flock($schreiben,3);
    fclose ($schreiben);}
    echo 
    "<script>self.location=\"http://www.armitage2k.net/public/guestbook.php\";</script>";
    ?>

  2. #2
    Zitat Zitat von Armitage2k Beitrag anzeigen
    1. ich möchte dass man nur noch posten kann wenn man vor dem senden einen 4stelligen zahlencode eingibt. wie schaff ich es eine warnung auszugeben, wenn der inhalt des textfeldes NICHT die zahlenkombination ist?
    PHP-Code:
    if($zahlencode1 == !empty($_GET['zahlencode2'])) die("Error!"); 
    Zitat Zitat von Armitage2k Beitrag anzeigen
    2. kann man ein textfeld erstellen wo man nur zahlen eingeben kann?
    Hab auf die Schnelle irgendwie nix gefunden, zum ueber pruefen reicht aber auch die obere Methode. Ich glaub aber das es sowas nicht gibt.

    Zitat Zitat von Armitage2k Beitrag anzeigen
    3. neuerdings hat ein Spambot den tollen trick dass er mir eine java weiterleitung ins kommentarfeld schreibt. sobald also die textfile mit dem inhalt geladen wird, wird mein besucher sofort wo anders hingeleitet.
    wie kann ich überprüfen lassen ob im text des textfeldes "kommentar" wörter bzw. zeichen enthalten sind?
    PHP-Code:
    function entry($entry){
        
    $entry strip_tags($entry);
        
    $entry htmlspecialchars($entry);
        
    $entry trim($entry);
        
    $entry addslashes($entry);
        return 
    $entry;

    Schmeisst alles Unnoetige aus dem String bevor es eingetragen wird.

    Ueberpruefen/Nach einem Wort suchen und gleich austauschen kannste so:
    PHP-Code:
    str_replace('suchwort''ersetzwort'$text); 

  3. #3
    Zitat Zitat von dead_cox Beitrag anzeigen
    PHP-Code:
    if($zahlencode1 == !empty($_GET['zahlencode2'])) die("Error!"); 
    Wobei man das natürlich leicht umgehen kann. Sicherer wäre es da, serverseitig in eine Textdatei oder performanter in ne Datenbank die Nummer, die erschienen ist, zu speichern und sie dann wieder von dort bei der Prüfung abruft.
    Muss man sich halt nen Cronjob einrichten, der die überfälligen Einträge nach ner Zeit wieder löscht.

    Zu 2: Naja, du könntest mit Javascript prüfen, ob die Eingabe eine Zahl ist und sie im Nein-Falle gerade wieder löschen.
    Aber wozu eigentlich? Damit machst du die Sache doch nur unnötig kompliziert.

  4. #4
    Zitat Zitat von NPC Fighter Beitrag anzeigen
    Wobei man das natürlich leicht umgehen kann. Sicherer wäre es da, serverseitig in eine Textdatei oder performanter in ne Datenbank die Nummer, die erschienen ist, zu speichern und sie dann wieder von dort bei der Prüfung abruft.
    Muss man sich halt nen Cronjob einrichten, der die überfälligen Einträge nach ner Zeit wieder löscht.
    Das kann man ja dann in die Variable schreiben, sollte ja auch nur nen einfaches bsp. sein.

  5. #5
    das mit dem zahlencode habt ihr anscheinend nicht ganz verstanden:

    ich möchte wenn jemand NICHT die Zahlen 1234 in das textfeld schreibt (das bedeutet irgendwelche anderen Zahlen ODER auch gar nichts) dass dann die Fehlermeldung angezeigt wird.

    wie stell ich es also an dass wenn das textfeld nicht gleich ist wie die gewünschte zahl die ich in einer variabek zugewiesen bzw. leer ist, eine Fehlermeldung angezeigt wird?

    Danke,
    A2k


    EDIT:

    Ich hab jetzt selber mal ein bisschen gebastelt und dabei das hier rausbekommen:
    PHP-Code:
    <?php

    $name 
    stripslashes($_POST['input_name']);
    $email $_POST['input_email'];
    $homepage $_POST['input_website'];
    $kommentar stripslashes(nl2br(trim(htmlentities(htmlspecialchars($_POST['input_comment'])))));
    $gmtime gmdate("H:i"time()+(7200)); 
    $gmdate gmdate("d.m.Y"time()+(7200));
    $code $_POST['input_code'];
    $combination 2306;

    //Abfrage, ob Textarea Name leer ist und Ausgabe einer Warnung
    if (empty ($name)) {  
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Bitte geben Sie Ihren Namen ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo;&laquo; zurück</A>");}

    //Abfrage, ob Textarea Komentar leer ist und Ausgabe einer Warnung
    if (empty ($kommentar)) {  
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Bitte geben Sie einen Kommentar ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo; zurück</A>");}

    //Abfrage, ob Textarea Code leer ist und Ausgabe einer Warnung
    if($code==$combination) {return true;} else {
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Das Feld mit dem Zahlencode ist leer, bzw. der Code ist falsch. <br />Bitte geben Sie den richtigen Zahlencode ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo; zurück</a>");}
        
    $txt "index_guestbook.txt";

    if(
    $homepage != "http://")
    {
    $homepage1 "<a href=\"$homepage\" target=\"_blank\">[Homepage]</a>";}

    if(
    $email != "")
    {
    $email1 "<a href=\"mailto:$email\">[E-Mail]</a>";}

    $lesen fopen("$txt""r");
    $inhalt fread($lesenfilesize($txt));
    fclose ($lesen);

    //Schreiben in die TXT-Datei
    $schreiben fopen("$txt""w");
    if(
    $schreiben){
    flock($schreiben,2);
    fputs ($schreiben"
    <b>Written by 
    $name</b>
    <b>
    $homepage1</b>
    <b>
    $email1</b> <b>on $gmdate at $gmtime</b><hr />
    $kommentar<hr />
    <br /><br />
    $inhalt");
    flock($schreiben,3);
    fclose ($schreiben);}
    echo 
    "<script>self.location=\"http://www.meineseite.at\";</script>";
    ?>
    wie ihr seht hab ich folgende 2 Veränderungen vorgenommen:
    1. es wurden html variablen usw. aus der eingabe entfernt
    PHP-Code:
    $kommentar stripslashes(nl2br(trim(htmlentities(htmlspecialchars($_POST['input_comment']))))); 
    2. für den fall dass die code eingabe leer bzw. falsch ist:
    PHP-Code:
    if($code==$combination) {return true;} else {
        die (
    "<b><font face=\"Arial, Verdena, sans-serif\" size=\"2\" color=black>Das Feld mit dem Zahlencode ist leer, bzw. der Code ist falsch. <br />Bitte geben Sie den richtigen Zahlencode ein.<br /><br /><a href=\"javascript:history.go(-1);\">&laquo; zurück</a>");} 
    das funktioniert auch ganz gut, abgesehen davon dass ich sobald ich das formular abgeschickt habe (mit dem richtigen code) ich bei meinem parser hängen bleibe!! das script arbeitet einfach nicht mehr weiter und ich weiss nicht wirklich warum... ideen?

    thx

    Geändert von Armitage2k (20.05.2007 um 00:02 Uhr) Grund: massive information

  6. #6
    Zitat Zitat von Armitage2k Beitrag anzeigen
    wie stell ich es also an dass wenn das textfeld nicht gleich ist wie die gewünschte zahl die ich in einer variabek zugewiesen bzw. leer ist, eine Fehlermeldung angezeigt wird?
    Javascript?:
    HTML-Code:
    <textarea rows="5" cols="40" name="input_code" id="input_code" 
    onchange="if(this.value!=code) alert('Achtung: Codes stimmen nicht ueberein');">
    </textarea>
    So etwas in dem Stil. Ich habs geprüft, sollte gehen, ich habe 'code' einfach durch eine Zahl ersetzt, das Problem ist jetzt, wie du 'code' in das Javascript bekommst. Ginge vielleicht mit einem verstecktem Element.

    Geändert von Drakes (20.05.2007 um 10:30 Uhr)

  7. #7
    Zitat Zitat von Drakes Beitrag anzeigen
    Javascript?:
    HTML-Code:
    <textarea rows="5" cols="40" name="input_code" id="input_code" 
    onchange="if(this.value!=code) alert('Achtung: Codes stimmen nicht ueberein');">
    </textarea>
    So etwas in dem Stil. Ich habs geprüft, sollte gehen, ich habe 'code' einfach durch eine Zahl ersetzt, das Problem ist jetzt, wie du 'code' in das Javascript bekommst. Ginge vielleicht mit einem verstecktem Element.
    die idee ist ja an und für sich ganz nett, allerdings hab ich da ein kleines problem: sobald ich das textfeld für den code anklicke, dort einen falschen code eingeibe und dann auf senden klicke, erscheint ein popup mit der warnung. wenn ich da auf ok klicke und dann auf speichern, wird der eintrag trotzdem geschrieben.


    da ich ausserdem mit JS nicht viel zu tun habe, würd ich trotzdem lieber bei meiner PHP variante bleiben. kann mir jemand sagen warum sich mein script mitten untern ausführen aufhängt?

    thx,
    A2k

  8. #8
    Ok, ich glaube das hat sich gerade erledigt.
    Irgendwie hat sich ein "return" zuviel im code eingeschlichen, sobald das entfernt wurde, ging alles tadellos.

    THX,
    A2k

  9. #9
    Du prüfst aber dann schon noch mit PHP, ob die eingegebene Zahl gleich der festgelegten ist?


    Edit @ cox: Damit stehst du nicht alleine. ^^

    Geändert von NPC Fighter (20.05.2007 um 13:04 Uhr)

  10. #10
    Ich versteh nich warum das alles so Kompliziert gemacht werden muss.

  11. #11
    Noch eine kleine Anmerkung: Wenn du das mit Javascript machst, kannst du dir die Sache mit dem Captcha auch direkt sparen - Wenn du dem Client (und damit auch den Bots) den Code schickst, kann dieser die Abfrage natürlich leicht umgehen - oder man schaltet einfach Javascript aus und schon kann man wieder wunderbar rumspammen. Zumal Bots überhaupt kein Javascript ausführen können...

  12. #12
    Zitat Zitat von Manni Beitrag anzeigen
    Noch eine kleine Anmerkung: Wenn du das mit Javascript machst, kannst du dir die Sache mit dem Captcha auch direkt sparen - Wenn du dem Client (und damit auch den Bots) den Code schickst, kann dieser die Abfrage natürlich leicht umgehen - oder man schaltet einfach Javascript aus und schon kann man wieder wunderbar rumspammen. Zumal Bots überhaupt kein Javascript ausführen können...
    Ok, da haste recht. Hab ich nicht bedacht. Wäre Schwachsinn. I'm Sorry >_< .

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •