Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung PHP und MySQL String an mail übergeben

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 10:11
Beitrag # 1 von 13
Bewertung:
(3685 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
huhu. Ich muss folgendes machen:
Erstellen Sie ein Formular mit folgenden Feldern:
Name, E-Mail, Anrede (Radiobutton: Herr, Frau, Firma), Land (Auswahlliste: D, CH, A u. a.).
Nach dem Absenden des Formulars soll überprüft werden, ob alles ausgefüllt wurde. Falls nein, so
lassen Sie erneut ausfüllen, wobei alte Werte erhalten bleiben sollen. Ist alles ausgefüllt, so werden
die Daten am Bildschirm angezeigt, in eine Datei namens "daten.dat" im selben Verzeichnis als
strichpunktseparierte Liste (Name;E-Mail;Anrede;Land) als „Archiv“ anhängend gespeichert und
per E-Mail (nur die Daten in einer Text-E-Mail, nicht etwa die Datei als Anhang!) an folgende
Adresse versendet: xx@xxx.de

hier ist bisher mein code.Die Daten aus dem Formular schreibe ich in dei datei daten.dat ($datei = $daten.dat).
mit file_get_contents lese ich die daten aus der geschriebenen datei $datei wieder
aus und übergebe sie in einen string namens $daten.
Dieser string soll in der auswertung.php an mail weitergegeben werden
und die daten sollen als text in der email verschickt werden.
die mail wird auch verschickt, aber anstatt des inhalts der daten.dat bekomme ich nur den text "$daten".
Außerdem bekomme ich immer eine fehlermeldung, dass file_get_contents nicht definiert ist. muss ich das denn tun?
in den beispielen die ich mir so angeguckt habe, stand auch nie mehr als bei mir jetzt drin.
Code
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aufgabe 1</title>
</head>
<body>
<?php
$datei = "daten.dat";

if ( ! isset ( $_POST ["Send"] ) )
{
?>

<form action="auswertung.php" method="post">

Anrede:
Herr <input name="Anrede" checked type="radio" value="Herr">
Frau <input name="Anrede" type="radio" value="Frau">
Firma <input name="Anrede" type="radio" value="Firma"><br>

Name:
<input name="Name" type="text"><br>

Email:<input name="Email" type="text"><br>

Land:
<select name="Land" style="width:165px; ">
<option>D</option>
<option >CH</option>
<option>A</option>
<option>UK</option>
<option>DK</option>
</select><br>

<input name="Send" type="submit" value="Abschicken">
<input name="Reset" type="reset" value="Löschen" style="margin-left:20px;"></td>

</form>
<?php
}
else
{ // Auswertung - in Datei schreiben
$zeilen = $_POST [ "Anrede" ] . "\n" .
$_POST [ "Name" ] . "\n" .
$_POST [ "Email" ] . "\n" .
$_POST [ "Land" ] . "\n" ;
if ( $fp = fopen ( $datei , "a" ) )
{
fputs ( $fp , $zeilen ) ;
fclose ( $fp ) ;
echo "<h3>Ihre Anfrage wurde gesendet. Vielen Dank! </h3>" ;
}
else
{
echo "<h4>Fehler: Datei nicht zu öffnen</h4>" ;
} // ende if
}
$daten = file_get_contents("daten.dat");
echo $inhalt;
?>

</body>

</html>


auswertung.php
Code
<?php  

if($_REQUEST['Send'])

{
if(empty($_POST['Anrede']) || empty($_POST['Name'])|| empty($_POST['Email']) || empty($_POST['Land']))
{
print 'Die Kontaktdaten sind nicht vollständig!';
exit;
}
else
{
$empfaenger = 'xxx@xxx.de';
$betreff = 'Kontaktdaten';
$nachricht = '$daten';
$header = "From: ".$_POST['Email'];

mail($empfaenger, $betreff, $nachricht, $header);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo "Ein Fehler ist aufgetreten. Bitte wenden Sie sich stattdessen per Email an
den Systemadministrator.";

}

?>


(Dieser Beitrag wurde von iPartner am 18. Apr 2008, 10:20 geändert)
X

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 10:53
Beitrag # 2 von 13
Beitrag ID: #346061
Bewertung:
(3659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hm. hab gerad gesehen, dass in die datei daten.dat gar nix reingeschrieben wird. woran kann das noch liegen?


als Antwort auf: [#346050]

String an mail übergeben

Bitfilme
Beiträge gesamt: 264

14. Apr 2008, 11:20
Beitrag # 3 von 13
Beitrag ID: #346064
Bewertung:
(3646 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo flowi81

Die Daten werden deshalb nicht geschrieben, weil Du die Auswertung auslagerst nach auswertung.php.
Schreibe alle Codes vom PHP in eine Datei zusammen, ausser der Ausgabe der daten.dat.
Nebenbei prüfe nach ob die Datei daten.dat existiert mit file_exists("daten.dat").


als Antwort auf: [#346061]

String an mail übergeben

Bitfilme
Beiträge gesamt: 264

14. Apr 2008, 11:40
Beitrag # 4 von 13
Beitrag ID: #346067
Bewertung:
(3632 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier ein Beispiel:
Code
<?php 
//error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aufgabe 1</title>
</head>
<body>

<form action="auswertung.php" method="post">

Anrede:
Herr <input name="Anrede" checked type="radio" value="Herr">
Frau <input name="Anrede" type="radio" value="Frau">
Firma <input name="Anrede" type="radio" value="Firma"><br>

Name:
<input name="Name" type="text"><br>

Email:<input name="Email" type="text"><br>

Land:
<select name="Land" style="width:165px; ">
<option>D</option>
<option >CH</option>
<option>A</option>
<option>UK</option>
<option>DK</option>
</select><br>

<input name="Send" type="submit" value="Abschicken">
<input name="Reset" type="reset" value="Löschen" style="margin-left:20px;"></td>

</form>
<?php
$datei = "daten.dat";

if (file_exists($datei)){
$daten = file_get_contents("daten.dat");
echo $daten;
}
?>

</body>

</html>


Code
<?php 
// -------- auswertung.php

//error_reporting(E_ALL);

if($_REQUEST['Send'])

{
if(empty($_POST['Anrede']) || empty($_POST['Name'])|| empty($_POST['Email']) || empty($_POST['Land']))
{
print 'Die Kontaktdaten sind nicht vollständig!';
exit;
}
else
{

if (isset($_POST [ "Anrede" ]) &&
isset($_POST [ "Name" ]) &&
isset($_POST [ "Email" ]) &&
isset($_POST [ "Land" ])){

$zeilen = $_POST [ "Anrede" ] . "\n" .
$_POST [ "Name" ] . "\n" .
$_POST [ "Email" ] . "\n" .
$_POST [ "Land" ] . "\n" ;
$datei = "daten.dat";

$fp = fopen ($datei , "a" );
if ($fp){
fputs ($fp , $zeilen);
fclose ( $fp );
}
else
{
echo "Datei konnte nicht zum schreiben geöffnet werden";
exit;
}

$empfaenger = 'xxx@xxx.de';
$betreff = 'Kontaktdaten';
$nachricht = '$daten';
$header = "From: ".$_POST['Email'];

mail($empfaenger, $betreff, $nachricht, $header);
echo"Vielen Dank für Ihre eMail!";
}
}
}
else
{
echo "Ein Fehler ist aufgetreten. Bitte wenden Sie sich stattdessen per Email an
den Systemadministrator.";

}

?>



als Antwort auf: [#346064]
(Dieser Beitrag wurde von iPartner am 18. Apr 2008, 10:20 geändert)

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 11:40
Beitrag # 5 von 13
Beitrag ID: #346068
Bewertung:
(3629 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo, danke für die antwort! ich habe jetzt alles php in eine datei getan,was genau meinst du mit der ausgabe von daten.dat?

das schreiben in die datei funkitoniert jetzt, aber nun kommt die mail bei mir nicht mehr an und ich bekomme eine fehlermeldung,

das die funktion file_get_contents nicht definiert ist... :(
Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aufgabe 1</title>
</head>
<body>

<form action="auswertung.php" method="post">

Anrede:
Herr <input name="Anrede" checked type="radio" value="Herr">
Frau <input name="Anrede" type="radio" value="Frau">
Firma <input name="Anrede" type="radio" value="Firma"><br>

Name:
<input name="Name" type="text"><br>

Email:<input name="Email" type="text"><br>

Land:
<select name="Land" style="width:165px; ">
<option>D</option>
<option >CH</option>
<option>A</option>
<option>UK</option>
<option>DK</option>
</select><br>

<input name="Send" type="submit" value="Abschicken">
<input name="Reset" type="reset" value="Löschen" style="margin-left:20px;"></td>

</form>

</body>

</html>


auswertung.php
Code
<p>&nbsp;</p> 
<?php
//überprüfen ob die datei existiert
$datei = 'daten.dat';

if (file_exists($datei)) {
print "";
} else {
print "Die Datei $filename existiert nicht!";
} //ende dateiüberprüfung



if ( ! isset ( $_POST ["Send"] ) )
{
}
else
{ // Auswertung - in Datei schreiben
$zeilen = $_POST [ "Anrede" ] . "\n" .
$_POST [ "Name" ] . "\n" .
$_POST [ "Email" ] . "\n" .
$_POST [ "Land" ] . "\n" ;
if ( $fp = fopen ( "daten.dat" , "a" ) )
{
fputs ( $fp , $zeilen ) ;
fclose ( $fp ) ;
echo "<h3>Ihre Anfrage wurde gesendet. Vielen Dank! </h3>" ;
}
else
{
echo "<h4>Fehler: Datei nicht zu öffnen</h4>" ;
} // ende if
}


$daten = file_get_contents("$datei");

if($_REQUEST['Send'])

{
if(empty($_POST['Anrede']) || empty($_POST['Name'])|| empty($_POST['Email']) || empty($_POST['Land']))//überprüfen ob alle Felder ausgefüllt wurden
{
print 'Die Kontaktdaten sind nicht vollständig!';
exit;
}
else //die mail senden
{
$empfaenger = 'xxx@xxx.de';
$betreff = 'Kontaktdaten';
$nachricht = '$daten';
$header = "From: ".$_POST['Email'];

mail($empfaenger, $betreff, $nachricht, $header);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo "Ein Fehler ist aufgetreten. Bitte wenden Sie sich stattdessen per Email an
den Systemadministrator.";

}

?>



als Antwort auf: [#346064]
(Dieser Beitrag wurde von iPartner am 18. Apr 2008, 10:21 geändert)

String an mail übergeben

Bitfilme
Beiträge gesamt: 264

14. Apr 2008, 12:00
Beitrag # 6 von 13
Beitrag ID: #346075
Bewertung:
(3614 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ist ja logisch das die Fehlermeldung kommt. Die Datei existiert nicht und deshalb kann sie auch nicht gelsesen werden.
Dazu kommt die falsche reihenfolge!
if (file_exists($datei)) {
print ""; //??????????????????????????????
} else {
print "Die Datei $filename existiert nicht!";
} //ende dateiüberprüfung

Was ist mit dem $filename?
Der ist nicht interpretiert.


als Antwort auf: [#346068]

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 13:03
Beitrag # 7 von 13
Beitrag ID: #346086
Bewertung:
(3589 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ok. das mit dem $filename hatte ich übersehen.

jetzt bekomme ich immer noch folgende fehlermeldung:


Fatal error: Call to undefined function: file_get_contents() in /mnt/web6/11/76/5207976/htdocs/aufgabe1/auswertung.php on line 40
und das mail-verschicken funzt auch nicht. was is da noch falsch? was bei der übergabe der daten bestimmt oder?

Code
 <?php 
//überprüfen ob die datei existiert
$datei = 'daten.dat';

if (file_exists($datei)) {
print "Die Datei ist vorhanden.";
} else {
print "Die Datei $datei existiert nicht!";
} //ende dateiüberprüfung



if ( ! isset ( $_POST ["Send"] ) )
{
}
else
{ // Auswertung - in Datei schreiben
$zeilen = $_POST [ "Anrede" ] . "\n" .
$_POST [ "Name" ] . "\n" .
$_POST [ "Email" ] . "\n" .
$_POST [ "Land" ] . "\n" ;
if ( $fp = fopen ( "daten.dat" , "a" ) )
{
fputs ( $fp , $zeilen ) ;
fclose ( $fp ) ;
echo "<h3>Ihre Anfrage wurde gesendet. Vielen Dank! </h3>" ;
}
else
{
echo "<h4>Fehler: Datei nicht zu öffnen</h4>" ;
} // ende if
}


$daten = file_get_contents("$datei");

if($_REQUEST['Send'])

{
if(empty($_POST['Anrede']) || empty($_POST['Name'])|| empty($_POST['Email']) || empty($_POST['Land']))//überprüfen ob alle Felder ausgefüllt wurden
{
print 'Die Kontaktdaten sind nicht vollständig!';
exit;
}
else //die mail senden
{
$empfaenger = 'xxx@xxx.de';
$betreff = 'Kontaktdaten';
$nachricht = '$daten';
$header = "From: ".$_POST['Email'];

mail($empfaenger, $betreff, $nachricht, $header);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo "Ein Fehler ist aufgetreten. Bitte wenden Sie sich stattdessen per Email an
den Systemadministrator.";

}

?>



als Antwort auf: [#346075]
(Dieser Beitrag wurde von iPartner am 18. Apr 2008, 10:22 geändert)

String an mail übergeben

ganesh
Beiträge gesamt: 1981

14. Apr 2008, 13:39
Beitrag # 8 von 13
Beitrag ID: #346095
Bewertung:
(3579 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Fatal error: Call to undefined function: file_get_contents() in /mnt/web6/11/76/5207976/htdocs/aufgabe1/auswertung.php on line 40

sagt dir, dass PHP diese Funktion nicht kennt. Welche PHP Version ist installiert? Frag sonst deinen Hoster warum das nicht aktiviert ist.

Du kannst auch folgenden Workaround versuchen:
http://ch2.php.net/...t-contents.php#80707

Für PHP < 4.3


als Antwort auf: [#346086]

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 14:49
Beitrag # 9 von 13
Beitrag ID: #346108
Bewertung:
(3564 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
die php versionen die gehen von meinem hoster aus sind php 4.0 und 5.0.
ist es denn theoretisch so richtig wie ich es aufgebaut haben mit den daten aus der datei in einen string und dann an die email weitergeben?


als Antwort auf: [#346095]

String an mail übergeben

flowi81
Beiträge gesamt: 7

14. Apr 2008, 15:16
Beitrag # 10 von 13
Beitrag ID: #346116
Bewertung:
(3558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hm. die email wird immer noch nicht verschickt. liegt das an der "undefiniertten" file_get_contents funktion? oder ist da noch ein fehler? eigentlich kann es ja nicht sein das mein server das nciht macht. kann man file_get_contents durch was anderes ersetzen?
jetzt geht die überprüfen funktion von den daten auch nicht mehr. wenn ich was nicht ausfülle, wird es trotzdem "gesendet". hilfe! :(


als Antwort auf: [#346108]
(Dieser Beitrag wurde von flowi81 am 14. Apr 2008, 15:18 geändert)

String an mail übergeben

Bitfilme
Beiträge gesamt: 264

15. Apr 2008, 11:20
Beitrag # 11 von 13
Beitrag ID: #346227
Bewertung:
(3510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ergänzen:
Code
if (file_exists($datei)) {  
$daten = file_get_contents($datei);
print "Die Datei ist vorhanden.";
} else {
print "Die Datei $datei existiert nicht!";
} //



als Antwort auf: [#346086]
(Dieser Beitrag wurde von Bitfilme am 15. Apr 2008, 11:20 geändert)

String an mail übergeben

flowi81
Beiträge gesamt: 7

15. Apr 2008, 14:07
Beitrag # 12 von 13
Beitrag ID: #346254
Bewertung:
(3488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
supi, das geht jetzt. mein host konnte doch nur 4.1.2, hab das mit dem workaround probiert. die mail wird auch versendet und ich habe keine fehlermeldung mehr. nur anstatt dem inhalt der datei "daten.dat" steht in der email selbst nur "$datei". was ist da noch falsch?

Code
<?php 

$datei = 'daten.dat';

//überprüfen ob die datei existiert
//PHP 4.2.x Compatibility function
if (!function_exists('file_get_contents')) {
function file_get_contents($datei, $incpath = false, $resource_context = null)
{
if (false === $fh = fopen($datei, 'rb', $incpath)) {
trigger_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
return false;
}

clearstatcache();
if ($fsize = @filesize($datei)) {
$data = fread($fh, $fsize);
} else {
$data = '';
while (!feof($fh)) {
$data .= fread($fh, 8192);
}
}

fclose($fh);
return $data;
}
}


if ( ! isset ( $_POST ["Send"] ) )
{
}
else
{ // Auswertung - in Datei schreiben
$zeilen = $_POST [ "Anrede" ] . "\n" .
$_POST [ "Name" ] . "\n" .
$_POST [ "Email" ] . "\n" .
$_POST [ "Land" ] . "\n" ;
if ( $fp = fopen ( "daten.dat" , "a" ) )
{
fputs ( $fp , $zeilen ) ;
fclose ( $fp ) ;
echo "<h3>Ihre Anfrage wurde gesendet. Vielen Dank! </h3>" ;
}
else
{
echo "<h4>Fehler: Datei nicht zu öffnen</h4>" ;
} // ende if
}


$daten = file_get_contents("$datei", 'r');

if($_REQUEST['Send'])

{
if(empty($_POST['Anrede']) || empty($_POST['Name'])|| empty($_POST['Email']) || empty($_POST['Land']))//überprüfen ob alle Felder ausgefüllt wurden
{
print 'Die Kontaktdaten sind nicht vollständig!';
exit;
}
else //die mail senden
{
$empfaenger = 'xxx@xxx.de';
$betreff = 'Kontaktdaten';
$nachricht = '$datei';
$header = "From: ".$_POST['Email'];

mail($empfaenger, $betreff, $nachricht, $header);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo "Ein Fehler ist aufgetreten. Bitte wenden Sie sich stattdessen per Email an
den Systemadministrator.";

}
?>



als Antwort auf: [#346227]
(Dieser Beitrag wurde von iPartner am 18. Apr 2008, 10:22 geändert)

String an mail übergeben

ganesh
Beiträge gesamt: 1981

15. Apr 2008, 16:11
Beitrag # 13 von 13
Beitrag ID: #346283
Bewertung:
(3467 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
$nachricht = '$datei'; // falsch
$nachricht = "$datei"; // korrekt

$variablen innerhalb einfachen Anführungszeichen werden nicht interpretiert.


als Antwort auf: [#346254]
X