php mit dateianhang?

Alles, was PHP betrifft, kann hier besprochen werden.

php mit dateianhang?

Postby Schmidtler » 13. October 2008 10:47

hi @ all bin grad dabei über php eine a-mail mit dateianhang zu versenden... bloß ich hab zwar ein beispiel formular gefunden was auch funktioniert wenn ich kein dateianhang mit einbeziehe aber es kommt immer dann diese fehlermeldung:

Warning: fread(): supplied argument is not a valid stream resource in C:\xampp\htdocs\kontaktformular.php on line 60
Vielen Dank für Ihre eMail!


und wenn ich in php guck dann steht unter line 60 dies hier:

$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);

was mach ich falsch?

mfg
schmidtler
Schmidtler
 
Posts: 21
Joined: 05. August 2008 08:25

Postby glitzi85 » 13. October 2008 12:42

Naja, aus irgend einem Grund wird wohl die temporäre Upload-Datei nicht gefunden. Wie sieht denn dein Formular aus?

Außerdem könntest du am Anfang der Datei mal das hier reinpacken:

Code: Select all
<?php
print_r($_FILES);
?>


Dann bekommst du beim Abschicken des Formulars eine Übersicht über die vorhandenen Variablen.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby Schmidtler » 13. October 2008 12:57

da ich selbst in php nur wenig bis keine erfahrungen habe hab ich mir ein php-script ausm www gezogen... hier mal den inhalt:

Code: Select all
<html>
<head>
<title>Kontaktformular inkl. Dateianhang mit PHP</title>
</head>
<body>
<?php

print_r($_FILES);

$Empfaenger = "azubi@mha.de";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
   {
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
   }
   else
   {
      $Mailbetreff = "Kontakt: ";
      $Mailbetreff .= $_REQUEST['Betreff'];

      $Trenner = md5(uniqid(time()));

      $Header = "From: ".$_REQUEST['Email'];
      $Header .= "\n";
      $Header .= "MIME-Version: 1.0";
      $Header .= "\n";
      $Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
      $Header .= "\n\n";
      $Header .= "This is a multi-part message in MIME format";
      $Header .= "\n";
      $Header .= "--$Trenner";
      $Header .= "\n";
      $Header .= "Content-Type: text/plain";
      $Header .= "\n";
      $Header .= "Content-Transfer-Encoding: 8bit";
      $Header .= "\n\n";
      $Header .= "Sie haben folgende Nachricht erhalten: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send" && $Formularfeld!="Anhang")
         {
            $Header .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Header .= "\nDatum/Zeit: ";
      $Header .= date("d.m.Y H:i:s");
      $Header .= "\n";
      $Header .= "--$Trenner";
      $Header .= "\n";
      $Header .= "Content-Type: ";
      $Header .= $_FILES['Anhang']['type'];
      $Header .= "; name=";
      $Header .= $_FILES['Anhang']['name'];
      $Header .= "\n";
      $Header .= "Content-Transfer-Encoding: base64";
      $Header .= "\n";
      $Header .= "Content-Disposition: attachment; filename=";
      $Header .= $_FILES['Anhang']['name'];
      $Header .= "\n\n";
      $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
      $Header .= chunk_split(base64_encode($Dateiinhalt));
      $Header .= "\n";
      $Header .= "--$Trenner--";

      mail($Empfaenger, $Mailbetreff, "", $Header);
      echo"Vielen Dank für Ihre eMail!";
   }
}
else
{
?>
<table border="0" cellpadding="1" cellspacing="2">
<form action="<?php echo$_SERVER['172.21.0.2']; ?>" enctype="multipart/form-data" method="post">
 <tr>
  <td>Name:</td>
  <td><input name="Name" size="20" type="text"></td>
 </tr>
 <tr>
  <td>eMail:</td>
  <td><input name="Email" size="20" type="text"></td>
 </tr>
 <tr>
  <td>Betreff:</td>
  <td><select name="Betreff" size="1"><option>Hilfe</option><option>Kritik</option><option>Werbung</option></select></td>
 </tr>
 <tr>
  <td>Nachricht:</td>
  <td><textarea cols="25" name="Nachricht" rows="5"></textarea></td>
 </tr>
 <tr>
  <td>Anhang:</td>
  <td><input name="Anhang" size="20" type="file"></td>
 </tr>
 <tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Abschicken">    <input name="Reset" type="reset" value="Löschen"></td>
 </tr>
</form>
</table>
<?php
}

?>
</body>
</html>




sry wenn das jetzt die seite sprengt ;)
Schmidtler
 
Posts: 21
Joined: 05. August 2008 08:25

Postby Wiedmann » 13. October 2008 13:03

ich hab zwar ein beispiel formular gefunden was auch funktioniert wenn ich kein dateianhang mit einbeziehe aber es kommt immer dann diese fehlermeldung:

Was bedeuted dieser Satz ganz genau, bzw. was ist dein Problem:
- Das du eine Fehlermeldung bekommst, wenn du dieses Formular ohne Dateianhang benutzt?
- Aber grundsätzlich tut damit das Mailversenden?


da ich selbst in php nur wenig bis keine erfahrungen habe

Da (und überhaupt) würde ich für sowas PEAR::Mail_Mime oder den PHPMailer nehmen. Und mir dazu die dazugehörige Doku und Beispiele lesen/anschauen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Schmidtler » 13. October 2008 13:09

ja es kommt ne fehlermeldung wenn ich kein dateianhang verschicke und wenn ich ein dateianhang mit reinnehme usw...und dann auf abschicken geh dann lädt es nur die ganze zeit aber es tut sich dann nix mehr...
ohne dateianhang funktioniert das mailversenden ja, bloß diese fehlermeldung kommt dazu...

mfg
schmidtler
Schmidtler
 
Posts: 21
Joined: 05. August 2008 08:25


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests