CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
17.02.2009, 05:55:29
|
Anfänger
|
|
Registriert seit: Jan 2009
Alter: 38
Beiträge: 27
|
|
Gestebuch mit Spam
Hoi
Ich kenne mich nicht wirklich gut aus mit php
habe ein tutoreal gemacht
und wolte aus eigener hand von einem anderen tutoreal ein spam schutz rein hauen.
die abfrage ob die spam richtig eingegeben wurde funzt leider ned ich weis ned was ich vergessen habe ich denke da fehlt was
villt kan es sich mal jemand hier anschauen und mir zeigen was falsch ist was fehlt???
...
das gb leuft auf meiner hp: http://tue-hauptclan.eu
PHP-Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$db = @new mysqli('localhost', '*****', '*****', '*****');
if (mysqli_connect_errno()) {
die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
readfile('header.html');
$Zahl_1 = intval(rand(1, 5));
$Zahl_2 = intval(rand(1, 5));
?>
<form action="index.php" method="post">
<table border="0">
<tr>
<td colspan="2">
<p align="center"><b><font color="#FFFFFF">Ins Gästebuch Eintragen</font></font></b></td>
</tr>
<tr>
<td><b><font color="#FFFFFF"><label>Name: </label> </font></font></b></td>
<td><label>
<font color="#FFFFFF">
<input name="Autor" style="width:186px" /><b></font></b></font></label></td>
</tr>
<tr>
<td><b><font color="#FFFFFF"><label>Text: </label> </font></font></b></td>
<td><label>
<font color="#FFFFFF">
<textarea name="Inhalt" rows="6" cols="40" style="font-weight: 700"></textarea><b></font></b></font></label></td>
</tr>
<tr>
<td><b><font color="#FFFFFF"><label><strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?:</strong></label> </font></font></b></td>
<td><label>
<input name="Antwort" type="hidden" id="Antwort" value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/>
<font color="#FFFFFF">
<input name="arithmetic" type="text" id="arithmetic" style="width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/></font></td></label>
</tr>
<tr>
<td>
<b><font color="#FFFFFF">Mögliche Aktionen:</font></b></td>
<td>
<font color="#FFFFFF">
<input type="submit" name="formaction" value="Eintragen" style="font-weight: 700" /> <input type="reset" name="Löschen" value="Löschen" style="font-weight: 700" /><b></font></b></font></td>
</tr>
</table>
</div>
</form>
<?php
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_POST['Autor'], $_POST['Inhalt'], $_POST['Antwort'], $_POST['formaction'])) {
die ('Benutzen sie nur Formulare von der Homepage.');
}
if (('' == $autor = trim($_POST['Autor'])) or
('' == $inhalt = trim($_POST['Inhalt'])) or
('' == $antwort = trim($_POST['Antwort']))) {
die ('Bitte füllen sie das Formular vollständig aus.');
}
if ('echo md5(( $Zahl_1 + $Zahl_2 )); ' != $antwort) {
die ('Sie müssen die Frage richtig beantworten.');
}
$sql = 'INSERT INTO
Guestbook(Autor, Datum, Inhalt)
VALUES
(?, NOW(), ?)';
$stmt = $db->prepare($sql);
if (!$stmt) {
die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
}
$stmt->bind_param('ss', $autor, $inhalt);
if (!$stmt->execute()) {
die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
}
echo '<p class="info">Gästebucheintrag hinzugefügt. <a href="index.php">Zurück zum Gästebuch</a>.</p>';
} else {
$sql = 'SELECT
Datum,
Autor,
Inhalt
FROM
Guestbook
ORDER BY
Datum DESC';
$result = $db->query($sql);
if (!$result) {
die('Der Query konnte nicht ausgeführt werden: '.$db->error);
}
if ($result->num_rows) {
while ($row = $result->fetch_assoc()) {
echo '<div class="beitrag">'."\n";
echo ' <span class="autor">'.htmlspecialchars($row['Autor'])."</span>\n";
echo ' <span class="datum">'.$row['Datum']."</span>\n";
echo " <p>\n";
echo nl2br(htmlspecialchars(preg_replace('~\S{30}~', '\0 ', $row['Inhalt'])));
echo " </p>\n";
echo "</div>\n";
}
} else {
echo '<p class="info">Es sind keine Gästebucheinträge vorhanden</p>';
}
}
readfile('footer.html');
?>
Währe cool wen das sich jamannd angugt mit mier
|
17.02.2009, 17:44:58
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Gestebuch mit Spam
PHP-Code:
//Das Echo ist hier definitiv falsch
if ('echo md5(( $Zahl_1 + $Zahl_2 )); ' != $antwort)
//versuch es mal hiermit. hab allerdings weiter nicht drüber geschaut
if (md5($Zahl_1 + $Zahl_2 ) != $antwort)
Korrektur: Auch die Antwort von mir ist hier falsch.
PHP-Code:
//Zahl 1 und 2 werden zufällig gebildet
$Zahl_1 = intval(rand(1, 5));
$Zahl_2 = intval(rand(1, 5));
//somit stimmt Zahl 1 und Zahl2 nicht mehr mit den Werten überein, die bei der Ausgabe des Formulars erzeugt wurden
Geändert von urvater (17.02.2009 um 18:20:13 Uhr)
Grund: Erweitert um Korrektur
|
17.02.2009, 17:56:54
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Gestebuch mit Spam
Habs mir mal etwas genauer angesehen. Dein Feld mit der eingetippten Antwort heißt "arithmetic". Du setzt deine Prüfung aber auf das Feld "antwort", in dem eh die richtige Lösung von dir eingesetzt wird.
Somit kann man eingeben, was man will, es ist immer richtig.
So müsste es korrekt sein, wenn ich mich nicht verlesen habe.
PHP-Code:
if(md5($_POST['arithmetic']) != $_POST['antwort'])
2. Problem: Deine Zahlen sind immer die gleichen. Schaue ich mir einmal dein Formular an, hab ich immer die richtige Lösung.
3. Problem: Spambots lösen Rechenaufgaben schneller und korrekter als die meisten User. x+y ist die leichteste Übung für einen Bot, zumal alles in Klartext steht.
Geändert von urvater (17.02.2009 um 18:05:06 Uhr)
Grund: if korrigiert
|
17.02.2009, 18:14:49
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Gestebuch mit Spam
Was mir noch dazu eingefallen ist. Da du das Ergebnis direkt als md5 weiter gibts, ist es ein leichtes die Lösung immer korrekt zu setzen auch wenn die Antwort falsch ist.
Ich könte z.B. auf meinem Rechner ein Formular erstellen in dem "arithmetic" immer mit 3 gefüllt ist und im Feld Antwort lasse ich den md5 Wert von 3 Eintragen. Somit ist die Prüfung schon umgangen.
Ein md5 Wert sollte also noch verändert werden.
Beispielt:
PHP-Code:
md5($Zahl1 + $Zahl2 +5)
//bei der Prüfung muß dann allerdings
if(md5($_POST['arithmetic']+5) != $_POST['antwort'])
Nun müsste man schon wissen, wie die Antwort gebildet hast um dieses zu umgehen.
|
18.02.2009, 00:44:02
|
Anfänger
|
|
Registriert seit: Jan 2009
Alter: 38
Beiträge: 27
|
|
AW: Gestebuch mit Spam
ok THX hat geklappet
siht nun so aus http://professorbass.eu nun auf gb klicken.
thx leude habs hingegrigt will jemachd den quell code soll ich den nochmal posten
wie es funzt wie es richtig ist???
|
20.02.2009, 19:00:27
|
Anfänger
|
|
Registriert seit: Jan 2009
Alter: 38
Beiträge: 27
|
|
AW: Gestebuch mit Spam
Also ich fühl mich langsam plöd.
aber ich hab da noch n prob mit dem skript,
villt hilft mier ja nochmal jemand nicht das ich hir stressen will srry voll peinlich.
ich hatte ja ein howto gemacht oder eher 2 einmal ein kontaktformular und das gb.
dan hab ich ja die antyspam von dem kontakformular übernommen super leuft.
nun aber will ich den cooky von dem kontakt au mit rein nehmen
ich dachte ich grieg das dan alleine hin sry hette es voher dazu schreiben sollen
genau so wie das kontaktformular also das ich ne e-mail bekomme wen jemand ein eintrag macht
in mein gb ich poste euch mal die 2 quelltexte
villt hat ja jemand bock und die nerfen sich mein scheiß an zuguggen.
und nem nooby zu helfen mit den anfängen THX:
wie immer auf http://professorbass.eu siht man das gb und das kontaktformular wie es bis jezt funzt...
hoffentlich hilft mier jemand *gg*
|
20.02.2009, 19:01:16
|
Anfänger
|
|
Registriert seit: Jan 2009
Alter: 38
Beiträge: 27
|
|
AW: Gestebuch mit Spam
das Kontaktformular:
PHP-Code:
<?php
// Wenn alle Felder ausgefuellt wurden und der Captcha stimmt, wird ein Cookie gesetzt
if($_GET['action'] != "" && !empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']) && ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) { setcookie("spam_protection", "spam_protection", time()+500); }
// Erstellen einer Rechenaufgabe
$Zahl_1 = intval(rand(1, 5)); $Zahl_2 = intval(rand(1, 5));
readfile('header.html');
// Wenn das Formular gesendet werden soll... if($_GET['action'] == "send") {
// ...der Cookie gegen Spam nicht gesetzt ist... if($_COOKIE["spam_protection"] != "spam_protection") {
// ... und die Rechenaufgabe FALSCH geloest wurde... if($_POST['number'] != md5($_POST['arithmetic'])) {
// ...dann eine Fehlermeldung ausgeben! echo "Die Rechenaufgabe wurde falsch gelöst!";
}
// Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt... if($_POST['number'] == md5($_POST['arithmetic'])) {
// ...und die eingegeben E-Mail Adresse in Wahrheit keine ist... if(!ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) {
// ...dann eine Fehlermeldung ausgeben! echo "Die eingegebene E-Mail-Adresse ist ungültig!";
}
// Ansonsten, wenn die eingegebene E-Mail Adresse auch wirklich eine ist... if(ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) {
// ...und kein Feld leer ist... if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message'])) {
// dann den ganzen Muell von Spambots oder auch menschlichen Spammern entfernen... $name = nl2br(stripslashes(htmlspecialchars($_POST['name']))); $IP = getenv("REMOTE_ADDR");
$absender = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $_POST['email'] ); $absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $absender );
$nachricht = nl2br(stripslashes(htmlspecialchars($_POST['message'])));
// ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren... $mailnachricht = "Hallo!\n\nEs ist eine neue Nachricht fuer Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;-)";
// ...an Sie verschicken... mail("support@professorbass.eu", "Neue Nachricht fuer Sie!", $mailnachricht, "From: $name <$absender>");
// ...und dem Benutzer sagen, dass alles glatt lief! echo "Vielen Dank für Ihre Nachricht! Wir lassen Ihnen umgehend eine Antwort zukommen.";
}
// Wenn nicht alle Felder ausgefuellt wurden, dann... else
{
// eine Fehlermeldung ausgeben! echo "Bitte füllen Sie alle Felder aus!";
}
}
}
}
}
?>
</font>
<form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=send">
<div align="center">
<table width="400" cellpadding="2" cellspacing="2">
<tr>
<td width="162"> <font color="#FFFFFF"><strong>Name:</strong></font></td>
<td width="188">
<font color="#FFFFFF">
<input name="name" type="text" id="name" style="border : 1px solid #000000; width:186px" value="<?php echo $_POST['name']; ?>"/></font></td> </tr>
<tr>
<td width="162"> <font color="#FFFFFF"><strong>E-Mail:</strong></font></td>
<td width="188">
<font color="#FFFFFF">
<input name="email" type="text" id="email" style="border : 1px solid #000000; width:186px" value="<?php echo $_POST['email']; ?>"/></font></td> </tr>
<tr>
<td width="162"> <font color="#FFFFFF"><strong>Nachricht:</strong></font></td>
<td width="188">
<font color="#FFFFFF">
<textarea name="message" id="message" style="border : 1px solid #000000; width:186px; height:100px" rows="4" cols="15"><?php echo $_POST['message']; ?></textarea></font></td>
</tr>
<tr>
<td width="162">
<font color="#FFFFFF">
<strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?</strong><b>:</b></font></td>
<td>
<font color="#FFFFFF">
<input name="number" type="hidden" id="number" value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/> </font><font color="#FFFFFF"> <input name="arithmetic" type="text" id="arithmetic" style="border : 1px solid #000000; width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/>
</font>
</td>
</tr>
<tr>
<td> <font color="#FFFFFF"> <strong>Mögliche Aktionen:</strong> </font> </td>
<td>
<font color="#FFFFFF">
<?php
// Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein if($_COOKIE["spam_protection"] != "spam_protection") {
?>
<input name="submit" type="submit" id="submit" value="Senden" /> <input name="reset" type="reset" id="reset" value="Zurücksetzen" />
<?php
}
// Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden if($_COOKIE["spam_protection"] == "spam_protection") {
?>
<input name="submit" type="submit" id="submit" value="Senden" disabled="true" /> <input name="reset" type="reset" id="reset" value="Zurücksetzen" />
<?php
}
readfile('footer.html'); ?>
und das gb siht nun so aus:
PHP-Code:
<?php error_reporting(E_ALL); ini_set('display_errors', 1);
include '../config/db.php'; readfile('header.html'); $Zahl_1 = intval(rand(1, 5)); $Zahl_2 = intval(rand(1, 5));
?> <form action="index.php" method="post"> <div align="center"> <table border="0" width="406"> <tr> <td colspan="2"> <p align="center"><b><font color="#FFFFFF">Ins Gästebuch Eintragen</font></font></b></td> </tr> <tr> <td width="192"><b><font color="#FFFFFF"><label>Name: </label> </font></font></b></td> <td width="204"><label> <font color="#FFFFFF"> <input name="Autor" style="width:186px" /></font></font></label></td> </tr> <tr> <td width="192"><b><font color="#FFFFFF"><label>Text: </label> </font></font></b></td> <td width="204"><label> <font color="#FFFFFF"> <textarea name="Inhalt" rows="6" cols="21" style="font-weight: 700"></textarea></font></font></label></td> </tr> <tr> <td width="192"><b><font color="#FFFFFF"><label><strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?:</strong></label> </font></font></b></td> <td width="204"><label> <input name="number" type="hidden" id="number" value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/> <font color="#FFFFFF"> <input name="arithmetic" type="text" id="arithmetic" style="width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/></font></td></label> </tr> <tr> <td width="192"> <b><font color="#FFFFFF">Mögliche Aktionen:</font></b></td> <td width="204"> <font color="#FFFFFF"> <input type="submit" name="formaction" value="Eintragen" style="font-weight: 700" /> <input type="reset" name="Löschen" value="Löschen" style="font-weight: 700" /></font></font></td> </tr> </table> </div> </div> </form> <?php if ('POST' == $_SERVER['REQUEST_METHOD']) { if (!isset($_POST['Autor'], $_POST['Inhalt'], $_POST['number'], $_POST['arithmetic'], $_POST['formaction'])) { die ('Benutzen sie nur Formulare von der Homepage.'); } if (('' == $autor = trim($_POST['Autor'])) or ('' == $inhalt = trim($_POST['Inhalt'])) or ('' == $antwort = trim($_POST['number'] == md5($_POST['arithmetic'])))) { die ('Bitte Überprüfen sie ihre Eingabe!!!'); } if ('echo md5(( $Zahl_1 + $Zahl_2 ));' == $antwort) { die ('Sie müssen die Frage richtig beantworten.'); } $sql = 'INSERT INTO Guestbook(Autor, Datum, Inhalt) VALUES (?, NOW(), ?)'; $stmt = $db->prepare($sql); if (!$stmt) { die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error); } $stmt->bind_param('ss', $autor, $inhalt); if (!$stmt->execute()) { die ('Query konnte nicht ausgeführt werden: '.$stmt->error); } echo '<p class="info">Gästebucheintrag hinzugefügt. <a href="index.php">Zurück zum Gästebuch</a>.</p>'; } else { ?> <br> <hr color="#6B0808"> <br> <?php
$sql = 'SELECT Datum, Autor, Inhalt FROM Guestbook ORDER BY Datum DESC'; $result = $db->query($sql); if (!$result) { die('Der Query konnte nicht ausgeführt werden: '.$db->error); } if ($result->num_rows) { while ($row = $result->fetch_assoc()) { echo '<div class="beitrag">'."\n"; echo ' <span class="autor">'.htmlspecialchars($row['Autor'])."</span>\n"; echo ' <span class="datum">'.$row['Datum']."</span>\n"; echo " <p>\n"; echo "<br>"; echo nl2br(htmlspecialchars(preg_replace('~\S{30}~', '\0 ', $row['Inhalt']))); echo " <p>\n"; echo "</div>\n"; echo "<hr color=\"#6B0808\"><br>"; } } else { echo '<p class="info">Es sind keine Gästebucheinträge vorhanden</p>'; } }
readfile('footer.html'); ?>
Geändert von professorbass (21.02.2009 um 14:16:04 Uhr)
|
21.02.2009, 14:23:04
|
Anfänger
|
|
Registriert seit: Jan 2009
Alter: 38
Beiträge: 27
|
|
AW: Gestebuch mit Spam
naja ich probiere und probiere stöbere bei googel und kome ned drauf
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28:15 Uhr.
|