mailAbfrage für Download & Eintrag mit fputs

treibstoff

Grünschnabel
liebe leuts,
Habe ein Script soweit am laufen das eine E-mailAbfrage für einen Download erfolgt, diese dann nach Validierung in eine Namens.txt einträgt zum Download führt.
Soweit ist alles gut.

Nun möchte ich noch ein Input Feld für die Namensangabe.
Und - da hab ich meine Schwierigkeiten wie ich die Abfragen doppelt anlegen kann und diese schließlich mit fputs zusammen in die Namens.txt eintrage.

Das Script bisher sieht so aus:
PHP:
<html><head></head><body>
<?PHP
function checkEmail($email) { 
if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)*.([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email)) { 
return false; 
} 
return true; 
} 

if($aktion=='eingabe'){
ausgabe($name);
}

echo "<form name='formular' action='$PHP_SELF'>\n";
echo "<input type='text' name='werbinich' size='25' value=\" Bitte Ihren Namen!\" name=\"s\" id=\"s\" onfocus=\"if (this.value == ' Bitte Ihren Namen!') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = ' Bitte Ihren Namen!';}\">\n";
echo "<input type='hidden' name='aktionb' value='wer' >\n";
echo "<input type='text' name='name' size='25' value='Ihre Mail Adresse' >\n";
echo "<input type='hidden' name='aktion' value='eingabe' >\n";
echo "<input type='submit' value='los!'>\n";
echo "</form>\n";

function ausgabe($name){
$fp = fopen("namen.txt", "a+");
$name1 = "\n".$name;
$name2 = "\n".$werbinich;
$email = trim($name);   
if(!checkEmail($email)) {  
echo 'Invalid email address!';
}
else {fputs($fp, $name1);fclose($fp); 
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://www.google.de\">";
}
}?> </body></html>

Wäre sehr dankbar für Hilfe bei der richtigen Syntax damit ich die Abfrage auch für das 'werbinich' Inputfeld hinbekomme.

grüsse thomas
 
Hallo,

wie wäre es, wenn du die if-Abfrage abänderst und der Ausgabefunktion zwei Übergabeparameter mitgibst?

PHP:
if($aktion=='eingabe'){
ausgabe($name, $werbinich);
}

.....
und natürlich die werte in der fputs methode schreiben..

PHP:
function ausgabe($name,$werbinich){
..... 
else {fputs($fp, $name1.$name2);fclose($fp);


Guten Rutsch
Shiva
 
PHP:
else {fputs($fp, $name1.$name2);fclose($fp);

hi Shiva,
ja das wars Vielen Dank für die Hilfe! Wie gesagt ich tu mich schwer mit der korrekten Syntax.
Im Prinzip hatte ich diese Anlage so auch schon gemacht - aber - anstatt den Punkt zwischen $name1 und $name2 hatte ich ein Komma gesetzt (sic!).....

Die ganze Abfrage inklusive Abfrage ob Eingabe vom Namen auch erfolgt ist sieht dann bei mir so aus:
PHP:
<html><head></head><body>
<?PHP
function checkEmail($email) { 
if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)*.([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email)) { 
return false; 
} 
return true; 
} 


if($aktion=='eingabe'){
ausgabe($name, $werbinich);
}

echo "<form name='formular' action='$PHP_SELF'>\n";
echo "bitte ihren namen <br />";
echo "<input type='text' name='werbinich' size='25' >\n";
echo "<br />bitte ihre mail <br />";
echo "<input type='text' name='name' size='25' >\n";
echo "<input type='hidden' name='aktion' value='eingabe' >\n";
echo "<input type='submit' value='los!'>\n";
echo "</form>\n";

function ausgabe($name,$werbinich){
$fp = fopen("namen.txt", "a+");
$name1 = "\n".$name;
$name2 = "\n".$werbinich;
$email = trim($name);
$string = trim($werbinich);    
if(!checkEmail($email)) {  
echo 'Invalid email address!';
}
else {
	if($string == "") {
	echo 'keine eingabe';}
		else {
	fputs($fp, $name1.$name2);fclose($fp);echo "<meta http-equiv=\"refresh\" content=\"0; url=http://www.google.de\">"; }

}}


?> </body></html>

Alles wird jetzt schön eingetragen soweit beide Felder ausgefüllt sind.

Eine Frage bleibt jetze noch:

Wie kann ich erreichen, das die bisherigen Eingaben wieder angezeigt werden, falls eine Eingabe nicht korrekt war und das Fenster wieder neu lädt

Auch dir Shiva 'n guten Rutsch und ich bin jetze raus hier.
Ahoi
 
Zuletzt bearbeitet:
Hi,

da musst einfach im input-Tag den Wert von Value setzten.
Sollte am schluss also html ausgegeben werden was so aussieht:

PHP:
<input type='text' name='werbinich' value='eingegebener Name' size='25' >

das erreichst damit, dass diesen value-Wert vorher zusammenbaust und im echo ausgibst..

(zusammenbauen)
PHP:
$werBinIchValue;
if($werbinich==''){ 
$werBinIchValue ="value='Bitte Name eingeben'";
}
else{ 
$werBinIchValue = "value='".$werbinich."'";
}

(ausgeben)
PHP:
echo "<input type='text' name='werbinich' size='25' ". $werBinIchValue . " >\n";

also, keine Frage mehr offen für das jahr? na dann kann die party losgehen. :)

grüße
 
hi shiva ....weiss ja nicht wo du sitzt....aber in Berlin is jezte doch noch Schnee....und mit Deiner Hilfe fallen mit die Fragen immer schwerer - und bedaure fast mit Dir nicht weiter an diesem Script zu basteln.

Alles funktioniert jetzt einwandfrei:
PHP:
<html><head></head><body>
<?PHP
function checkEmail($email) { 
if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)*.([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email)) { 
return false; 
} 
return true; 
} 

if($aktion=='eingabe'){
ausgabe($name, $werbinich);
}
if($werbinich==''){  
$werBinIchValue ="value=' Bitte Ihren Namen!' onfocus=\"if (this.value == ' Bitte Ihren Namen!') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = ' Bitte Ihren Namen!';}\"";  
} 
else{  
$werBinIchValue = "value='".$werbinich."' onfocus=\"if (this.value == ' Bitte Ihren Namen!') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = ' Bitte Ihren Namen!';}\""; 
}  
if($name==''){  
$mailValue ="value=' Bitte Ihre MailAdresse!' onfocus=\"if (this.value == ' Bitte Ihre MailAdresse!') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = ' Bitte Ihre MailAdresse!';}\""; 
} 
else{  
$mailValue = "value='".$name."'onfocus=\"if (this.value == ' Bitte Ihren Namen!') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = ' Bitte Ihren Namen!';}\""; 
}


echo "<form name='formular' action='$PHP_SELF'>\n";
echo "bitte ihren namen <br />";
echo "<input type='text' name='werbinich' size='25' ". $werBinIchValue . " >\n"; 

echo "<br />bitte ihre mail <br />";
echo "<input type='text' name='name' size='25' ". $mailValue . "  >\n";
echo "<input type='hidden' name='aktion' value='eingabe' >\n";
echo "<input type='submit' value='los!'>\n";
echo "</form>\n";

function ausgabe($name,$werbinich){
$fp = fopen("namen.txt", "a+");
$name1 = "\n".$name;
$name2 = "\n".$werbinich;
$email = trim($name);
$string = trim($werbinich);    
if(!checkEmail($email)) {  
echo 'Invalid email address!';
}
else {
   if(($string == "Bitte Ihren Namen!") or ($string == "")) { 
    echo 'Bitte geben Sie Ihren Namen ein!';} 
        else {  

	fputs($fp, $name1.$name2);fclose($fp);echo "<meta http-equiv=\"refresh\" content=\"0; url=http://www.google.de\">"; }

}}?> </body></html>

Das wars eigentlich - aber auch nicht ganz:
PHP:
if(($string == "Bitte Ihren Namen!") or ($string == ""))
diese Abfrage könnte man sicher nur kürzer schreiben - oder

Eine ganz kleine Unschönheit gibs ooch noch - aber die liegt in der Abfolge der Abfragen begründet - und weis auch nicht das umzuändern - ist aber auch nicht so wichtig - aber auch nicht perfekt:
Werden keine Abfragen gemacht gibt es zunächst nur die Fehlermeldung für die Invalid E-mail........... und nicht für beide Eingaben.

Und - dann frage ich mich ob ich hier noch'n Spam Schutz (matheaufgabe oder sowas) einbauen sollte - bzw. ob das Script anfällig wäre für SpamBots?
Letztlich werdenn die Eingaben 'eh nur in eine namen.txt geschrieben und nachgeschaut ob dort Mails auftauchen die Echt sein könnten. Diese Text -Datei kann auch immer wieder mit
PHP:
<?php unlink("namen.txt");echo 'gelöscht'; ?>
gelöscht werden - weil 'eh gleich wieder neuangelegt bei Eingaben.

Also Shiva - du siehst - da gibts doch noch ein paar mögliche Antworten.....

Ahoi - lass es dir gut gehen
thomas
 
Zurück