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 |
09.12.2018, 18:56:03
|
Anfänger
|
|
Registriert seit: Jul 2012
Beiträge: 8
|
|
Leere Emails über mein Script
Ich habe vor Jahren ein Script in PHP aus Vorlagen gebastelt,
welches die Bestellung aus einem Buchshop als Email versendet.
Die Datei heißt shopmail.php und liegt in einem Unterverzeichnis innerhalb des Shops.
Wenn ich die Datei über den Browser aufrufe, wird eine leere Mail versandt.
Es kommen immer mal wieder leere Emails an (1 oder 2 am Tag),
dh. die shopmail.php wurde aufgerufen, ohne das Daten in das Formular geschrieben wurden. Das Verzeichnis hat eine index.html.
Wie kann ich das einzelne Aufrufen der shopmail.php durch bots verhindern?
robots.txt steht im root. Im root läuft joomla. Bin für jeden Tip dankbar!
inozwo
Mein uraltes Script sieht so aus:
PHP-Code:
<?php // ======= Konfiguration: $mailTo = 'an mich'; $mailFrom = '"Buchshop " <meine adresse>'; $mailSubject = 'Onlinebestellung'; $returnPage = 'http://www.xyz.de/buch/shop1/formular-verarbeitet.htm'; $returnErrorPage = 'http://www.yxz.de/buch/shop1/fehler-aufgetreten.htm'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($value as $valueArray) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $valueArray . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if
// ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailText = stripslashes($mailText); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { // Seite "Formular verarbeitet" senden: header("Location: " . $returnPage); } // Wenn die Mail nicht versendet werden konnte: else { // Seite "Fehler aufgetreten" senden: header("Location: " . $returnErrorPage); } // ======= Ende exit(); ?>
das Formular aus dem Shop sieht so aus:
HTML-Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<!-- Lib: C:\Programme\Shop\vorlagen\kasse.htm -->
<meta http-equiv="expires" content="0">
<title>Kasse</title>
blablabla
[B]<form name="Formular" action="http://www.xyz.de/buch/shop1/bin/shopmail.php" method="POST" onSubmit="return chkForm(this)">[/B]
<h3>Ihre Bestellung</h3>
<table border="0" width="100%" bgcolor="#C0C0C0" cellspacing="0">
<tr>
<td width="13%" valign="top"><b>Anzahl</b></td>
<td width="13%" valign="top"><b>Nr</b></td>
<td width="44%" valign="top"><b>Artikel</b></td>
<td width="15%" align="right" valign="top"><b>Preis Euro</b></td>
<td width="15%" align="right" valign="top"><b>Total</b></td>
</tr>
<script language="JavaScript">
<!--
sArt=parent.getKorb();
if (sArt.length<1)
{
alert('Kein Artikel im Warenkorb!');
self.location.replace('start.htm');
}
gTotal=0.0;
for (sArti=0; sArti<sArt.length; sArti++)
{
putsArt(sArt[sArti]);
}
// --> </script>
<script language="JavaScript"><!--
versand();// --> </script>
<script language="JavaScript"><!--
zuschlag();// --> </script>
<tr>
<td width="13%" valign="top">
</td>
<td width="13%" valign="top"> </td>
<td width="44%" valign="top"> </td>
<td width="15%" align="right" valign="top"> </td>
<td width="15%" align="right" valign="top">
<hr>
<b>Euro <script language="JavaScript"><!--
document.write(getBetr(gTotal));// --> </script>
</b></td>
</tr>
<script language="JavaScript">
<!--
if (sArt.length>0)
{
for (sArti=0; sArti<sArt.length; sArti++)
{
document.writeln('<input type="hidden" name="Artikel[]" value="'+sArt[sArti]+'">');
}
}
if (aVersand>0.0) document.Formular.Versand.value=getBetr(aVersand);
document.Formular.Zuschlag.value=getBetr(aZuschlag);
document.Formular.Total.value=getBetr(gTotal);
// --> </script>
</table>
<hr>
<table border="0" cellspacing="1" width="100%">
<tr>
<td width="100%"><b>Konditionen:</b>
<p>Alle Preise sind inklusive der gesetzl. geltenden MwSt. zzgl. Versandkosten.
Die Versandkosten werden individuell
nach Gewicht berechnet (gerne auch nach
vorheriger Auskunft per <a href="mailto:info@g-e-h.de"> Email</a> oder Telefon. Bitte rufen Sie uns einfach
unter Tel.: 675849 an). Grundsätzlich versenden
wir für Sie so günstig wie möglich und erheben aus diesem Grund bisher keine
unvorteilhafte Versandkostenpauschale.
Mit der Büchersendung erhalten Sie eine Rechnung über die zugestellten
Artikel plus der veranschlagten Versandkosten (abhängig vom Gewicht).
</td>
</tr>
</table>
<hr>
<form>
<table border="0" width="76%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr>
<td width="34%"valign="top"><b>Lieferung:</b><br>
<select size="1" name="Lieferung">
<option value="per Post" selected>per Post</option>
<option>Abholung</option>
</select>
</td>
<td width="39%"valign="top"><b>Zahlung:</b><br>
<select size="1" name="Zahlung">
<option value="Rechnung" selected>Rechnung</option>
<option value="Bankeinzug">Bankeinzug</option>
<option>Bar</option>
</select>
</td>
<td width="24%" valign="top" rowspan="5">
</td>
</tr>
<tr>
<td width="34%"valign="top"><br><b>Bei Bankeinzug:</b>
</td>
<td width="39%"valign="top">
</td>
</tr>
<tr>
<td width="34%"valign="top">Kreditinstitut</td>
<td width="39%"valign="top"><input type="text" name="Bank" size="30" value="">
</td>
</tr>
<tr>
<td width="34%"valign="top">Bankleitzahl oder BIC</td>
<td width="39%"valign="top"><input type="text" name="BLZ_oder_BIC" size="30" value="">
</td>
</tr>
<tr>
<td width="34%"valign="top">Konto-Nr. oder IBAN</td>
<td width="39%" valign="top"><input type="text" name="KtoNr_oder_IBAN" size="30" value="">
</td>
</tr>
</table>
<h3> Auftraggeber</h3>
<table border="0" width="98%" cellspacing="0">
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"> </td>
<td width="73%"> </td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top">Anrede:</td>
<td width="73%"><input type="text" name="Anrede" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top">Firma:</td>
<td width="73%"><input type="text" name="Firma" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>Name:</b></td>
<td width="73%"><input type="text" name="Name" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>Vorname:</b></td>
<td width="73%"><input type="text" name="Vorname" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top">Zusatz:</td>
<td width="73%"><input type="text" name="Zusatz" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>Strasse u. Hausnummer:</b></td>
<td width="73%"><input type="text" name="Strasse" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>PLZ:</b></td>
<td width="73%"><input type="text" name="PLZ" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>Ort:</b></td>
<td width="73%"><input type="text" name="Ort" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>Land:</b></td>
<td width="73%"><input type="text" name="Land" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top">Telefon:</td>
<td width="73%"><input type="text" name="Telefon" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"><b>E-Mail:</b></td>
<td width="73%"><input type="text" name="EMail" size="30" value=""></td>
</tr>
<tr>
<td width="5%"> </td>
<td width="22%" valign="top"> </td>
<td width="73%"> </td>
</tr>
</table>
<p><b>Bemerkung:</b><br>
<textarea rows="5" name="Bemerkung" cols="61"></textarea><br>
<input type="checkbox" name="AGB" value="ON"> Ich akzeptiere die Allgemeinen Geschäftsbedingungen
(Hier können Sie unsere AGB abrufen: <a href="v" target="_blank">AGB</a>)</p>
<p>Mit dem Abschicken Button können sie kostenpflichtig bestellen:</p>
<p>
<input type="submit" value="Abschicken" name="B1">
<input type="reset"
value="Zurücksetzen" name="B2"></p>
</form>
</body>
</html>
|
09.12.2018, 22:40:54
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Leere Emails über mein Script
Mal so als kleinen Denkanstoß: setze in Deinem Formular einen Wert mit DEFINE und frage in der shopmail.php ab, ob der Wert gesetzt ist.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
11.12.2018, 10:35:19
|
Anfänger
|
|
Registriert seit: Jul 2012
Beiträge: 8
|
|
AW: Leere Emails über mein Script
Zitat:
Zitat von vt1816
Mal so als kleinen Denkanstoß: setze in Deinem Formular einen Wert mit DEFINE und frage in der shopmail.php ab, ob der Wert gesetzt ist.
|
Öhm, danke für den Denkanstoß...ich habe daraufhin nachgelesen.
Dabei ist das rausgekommen:
Im Formularbereich der Datei: kasse.htm
<?php
define("START", "START");
?>
Das muss ich verstecken, da sichtbar im Browser...
Und diese Abfrage als erstes ganz oben in der shopmail.php:
<?php
defined('START')||(header("HTTP/1.1 403 Forbidden")&die('403.14 - Directory listing denied.'));
?>
Wenn ich die Datei shopmail.php direkt im Browser aufrufe, kommt die Meldung:403.14 - Directory listing denied. Das stoppt also diese leeren Emails. Gut.
Die Bestellung geht aber bei ausgefülltem Formular nicht mehr weiter. Es erscheint nur eine weisse Seite. Kein Emailversand mehr durch shopmail.php
Also liegt der Fehler im Formular kasse.htm
Was mache ich falsch?
vg
inozwo
|
11.12.2018, 10:37:35
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Leere Emails über mein Script
Schon mal debugged?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
11.12.2018, 12:38:27
|
Anfänger
|
|
Registriert seit: Jul 2012
Beiträge: 8
|
|
AW: Leere Emails über mein Script
Zitat:
Zitat von vt1816
Schon mal debugged?
|
da kommt wieder bei bestellung absenden: 403.14 - Directory listing denied.
d.h. meine Abfrage in der shopmail.php ist verkehrt, damit blockiere ich eher alles...
wenn ich in die Datei: shopmail.php nur
<?php
defined('START');
?>
stehen lasse, geht die Bestellung durch. Allerdings kann ich jetzt auch trotz des Wertes im Formular die Datei shopmail.php einzeln abrufen...
muss ein anderer befehl sein, ich lese nochmal
Geändert von inozwo (11.12.2018 um 12:50:59 Uhr)
|
11.12.2018, 12:51:38
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Leere Emails über mein Script
Arbeite nicht mit 403 sondern lenke auf index.html/php in der Root um.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
12.12.2018, 19:59:08
|
Anfänger
|
|
Registriert seit: Jul 2012
Beiträge: 8
|
|
AW: Leere Emails über mein Script
hai,
ich habe in die Datei kasse.htm des Shops (siehe oben)
, innerhalb des Formulars
<?php
define("INKLUDECHECK", "INKLUDECHECK");
?>
geschrieben.
Und diese Abfrage als erstes ganz oben in der shopmail.php:
<?php
if defined('INKLUDECHECK', 'INKLUDECHECK'));}
{
....
ab hier weiter mit code aus shopmail.php
Ich glaube, der Wert wird gar nicht abgefragt...
kann mit:
header: lokation etc. zwar auf die index.htm des shops umleiten, aber wenn noch nicht mal die Abfrage der Existenz einer Konstanten bzw. eines ausgefüllten Formulares klappt?
Bin nach wie vor ratlos, nach stunden von basics lesen...
|
13.12.2018, 07:40:13
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Leere Emails über mein Script
Wenn der/die Dateinamen wirklich auf .htm (.html) enden, bringen Dir PHP-Anweisungen in diesen Dateien nichts, da sie nicht geparst werden.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
13.12.2018, 09:42:44
|
Anfänger
|
|
Registriert seit: Jul 2012
Beiträge: 8
|
|
AW: Leere Emails über mein Script
Danke für den Hinweis.
|
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 22:31:24 Uhr.
|