gaesteb.php?page=1;2;3 usw...

  • Hallo Leute,


    ich habe ein Problem mit meinem Gästebuch:


    auf der normalen Seite www.dietotenkoepfe.de/gaesteb.php funktioniert alles einwandfrei.
    Bedeutet wenn ich weiterblätter gelange ich auf www.dietotenkoepfe.de/gaesteb.php?page=2 usw...


    Jedoch stelle ich gerade um auf (zurzeit) versuch,dietotenkoepfe.de/index.php?page=gaesteb


    da funktioniert das ganze ja nicht... wie mache ich da die weiterblätterfunktion?


    hier die gaesteb.php:



    weis jemand was?

  • Ja, ich weiß das ich mich jetzt mal in deine Seite hacken werde, da du die absolute MEGA LÜCKE gebaut hast :)
    Ich sag dir sogar wie ich es mache .. schau hier und hier


    Geht 1. Klassig
    a) da du mega VERALTETES mysql_*() benutzt
    b) ohne jegliche prüfung, GET Parameter in dein SQL schreibst .. sehr nice


    Beschäftige dich mit beidem, am besten mysqli_*() oder PDO mit prepared statements benutzen.



    Zu deinem unprioritären Problem .. mach doch einen zweiten Parameter z.B. subpage und geb diesem die Gästebuch-Seiten-ID.

  • also noch hab ich weder Zeit noch Kopf um auf Mysqli umzustellen, da ich ja auch Schule hab... Außerdem ziehe ich es eher vor gerade das was ich hab soweit umzustellen.


    Und das deiner Meinung nach unprioritäre Problem was zu mir versucht zu Lösen zu helfen... HÄH? :D
    Ich grd nix checke :D
    wie meinst du das?

  • Na dann,
    ich würde sagen, rechtlich gehst du grob fahrlässig mit den Daten deiner User um aber dass ist nicht mein Problem.


    Naja du sollst Links so aussehen lassen:

    Code
    1. example.com/?page=gastebuch&subpage=2


    Das da garantiert übrigens spamming: (da freut sich jeder, JEDER mailfinder-BOT drüber :)

    PHP
    1. <?php echo '<a href="mailto:'.htmlspecialchars($row->mail).'" title="'.htmlspecialchars($row->mail).'">'.htmlspecialchars($row->mail).'</a>'; ?>

    Und normalerweise werden Mailadressen nur unter besonderen Bedingungen Sichtbar oder gar NIEMALS (außer für Admins)

  • flo96
    würde noch prüfen, ob die eingetragene email eine (Anzahl 1) valide email ist.
    Ich hab mal nen Testeintrag abgeschickt mit der email: fake@test.de,hanswienerschnitzel@gmail.com


    Es gibt fälle, bei denen sowas als Lücke ausgenutzt wird. Dabei werden viele viele email-Adressen per Komma angehangen und der Server fungiert als Spam-Verteiler.
    Hier in Deinem Fall sollte das (noch) nicht passieren können. Falls Du aber das oder ein ähnliches Formular erweiterst
    wie zB als Kontaktformular:
    - User trägt sein Anliegen ein
    - trägt seine email ein
    - schick Formulat ab
    - Du erstellst Serverseitig eine sofort-Antwort in etwa "Vielen Dank für Ihr interesse ... Ihre Nachricht wird sobald wie möglich bearbeitet. ..."


    Ein Angreifer könnte nun viele email-Adressen Komma-getrennt als email angeben,
    und Dein Server sendet an all diese Adressen emails raus.


    (Ist ein bissl schlecht erklärt, aber der Sinn sollte klar sein)


    Akzeptiere also nur valide emais (Anzahl 1)
    http://php.net/manual/de/filter.examples.validation.php


    So, wollt nicht vom eigtl Thema ablenken, fand es aber wichtig (auch was wolf meinte zwecks sql) =)

  • & was ist dass denn?


    Lass mich raten, du willst einfach nur die Seitenid?

    PHP
    1. $page = (isset($_GET['page']) && !empty($_GET['page'])) ? (int) trim($_GET['page']) : 1;

    ODER (einfach nur in lang)

    PHP
    1. if (isset($_GET['page']) && !empty($_GET['page'])) {
    2. $page = (int) trim($_GET['page']);
    3. }
    4. else{
    5. $page = 1;
    6. }
  • cottton
    Danke für deine eindrucksvolle demo, den eintrag werde ich dann löschen :D


    wolf
    klar ich möchte eine die Weiterblätterfunktion machen und daran erinnern kann ich mich nicht mehr woher ich das hab....
    Glaub jemand hatte mir dabei geholfen :D


    Ist das nun ein Lösungsvorschlag?

  • Ich hab nun mein Script optimiert....
    [PHP]
    <?php
    error_reporting(E_ALL); // PHP Meldungen anzeigen (0/1)


    // Weiterleitung - Nach dem absenden des Formulars,
    // gelangt der Benutzer über einen Link auf folgende Seite:
    $Weiterleitung = "versuch.dietotenkoepfe.de/neu/gaesteb.php";


    // Automatische Weiterleitung
    $Autoweiterleitung = 2; // Zeit in Sekunden


    $name = isset($_POST["name"]) ? $_POST["name"] : ""; // Name
    $email = isset($_POST["mail"]) ? $_POST["mail"] : ""; // E-Mail
    $homepage = isset($_POST["homepage"]); // Homepage
    $nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : ""; // Nachricht


    // Benutzereingaben überprüfen
    $Fehler = array("name"=>"","mail"=>"","nachricht"=>"","sicherheit"=>"");
    if (isset($_POST["submit"])){
    $Fehler["name"] = strlen($_POST["name"]) < 1 ? "Bitte fülle dieses Feld aus!" : "";
    if(isset($_POST["mail"])): $Fehler["mail"] = filter_var($email, FILTER_VALIDATE_EMAIL) === false ? "Gib eine gültige E-Mail-Adresse ein!" :"";endif;
    $Fehler["nachricht"] = strlen($_POST["nachricht"]) < 5 ? "Bitte fülle dieses Feld aus (min. 5 Zeichen)!" : "";
    $Fehler["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Rechenaufgabe ist leider falsch!" : "";
    }


    // Sicherheitsabfrage - Zufallszahlen generieren
    $Z0 = array(mt_rand(1, 9), mt_rand(1, 9));
    $Z1 = max($Z0); $Z2 = min($Z0);
    $Spam = $Z1 . " + &#" . (48 + $Z2) . ";";
    $Schutz = md5($Z1 + $Z2);


    // Formular erstellen
    $Formular = "<fieldset class='border-radius border'>
    <legend class='border-radius border'>Eintragen</legend>
    <form action='" . $_SERVER['SCRIPT_NAME'] . "' method='post'>
    <br>
    <label for='name'>Dein Name <span class='pflichtfeld'>&#10034</span> :</label>
    <br>
    <input class='input' placeholder='Dein Name' value='" . $name . "' type='text' name='name'/>
    <br>
    <span class='pflichtfeld'> " . $Fehler["name"] . "</span>
    <br>
    <br>
    <label for='mail'>Deine E-Mail:</label>
    <br>
    <input class='input' placeholder='Deine E-Mail' value='" . $email . "' type='text' name='mail' />
    <br>
    <span class='pflichtfeld'> " . $Fehler["mail"] . "</span>
    <br>
    <br>
    <label for='homepage'>Deine Homepage: (ohne http:// eintragen)</label>
    <br>
    <input type='text' name='homepage' class='input' placeholder='www.musterwebsite.de' value='" . $homepage . "' />
    <br>
    <br>
    <br>
    <label for='nachricht'>Deine Nachrichht <span class='pflichtfeld'>✲</span> :</label>
    <br>
    <textarea id='area' placeholder='Deine Nachricht' name='nachricht'>" . $nachricht . "</textarea>
    <br>
    <span class='pflichtfeld'>" . $Fehler["nachricht"] . "</span>
    <br>
    <br>
    <label for='zip'>Sicherheitsabfrage <span class='pflichtfeld'>✲</span> : &nbsp; </label>
    <br>
    <em>" . $Spam . "</em> =
    <input type='number' name='zip' size='4' class='border-radius' autocomplete='off'>
    <input type='hidden' name='zip2' value='" . $Schutz . "'>
    <br>
    <span class='pflichtfeld'>" . $Fehler["sicherheit"] . "</span>
    <br>
    <br>
    <a href='" . $_SERVER['SCRIPT_NAME'] . "'><input type='reset' value='Abbrechen' class='tereintragen'></a>
    <input type='submit' name='submit' value='Absenden' class='tereintragen'>

    <p><small>Bitte alle mit <span class='pflichtfeld'>✲</span> markierten Felder ausfüllen.</small></p>
    <br>
    </form>
    ";
    ?>
    [/PHP]


    Nun ist mein Problem, dass die mail und die Homepage nicht unbedingt angegeben werden müssen...


    Wie stelle ich das nun an, dass wenn keine email angegeben ist und das form abgesendet wird, kein fehler daraus gemacht wird?