mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 10.12.2016 06:10 Benutzername: Passwort: Auto-Login

Thema: PHP Mail Problem vom 23.09.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP Mail Problem
Seite: Zurück  1, 2
Autor Nachricht
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 39
Geschlecht: Männlich
Verfasst Fr 23.09.2005 11:49
Titel

Antworten mit Zitat Zum Seitenanfang

@caZpa:
Die einzelnen Mailheader müssen (nach dem SMTP-RFC) mit \r\n abgetrennt werden (auf auf Unix-Systemen). Wenn der MTA das anders auch akzeptiert ist es nur Glück. MTAs, die sich streng an den Standard halten, machen das so nicht mit.


Code:
if( ($button == "absenden") & (!$fehler['name'] ) ) {

Bit-Operation? Das sollte wohl eher && statt & heißen, oder?

Ich kann an demCode nicht sehen, wo ein Fehler liegen könnte.
Ich sehe zwar Code-Ausschnitte, aber ich kann immer noch nicht sehen, wo dein Objekt instantiiert wird und was dann geschieht.
Außerdem sieht die Klasse irgendwie recht merkwürdig aus... Macht für mich hier gar keinen Sinn, hier eine Klasse zu benutzen, so wie du das tust. Da würden die Funktionen alleine ausreichen... jedenfalls so, wie du das hier gemacht hast. Warum benutzt du hier eine Klasse? Was wolltest du damit bezwecken?
Irgendwie scheint es mir, als wäre das dein erster Versuch objektorientierter Programmierunf..?

Dann:
Wo kommt denn das Array $fehler her?
Wieso benutzt du keine Klassenvariablen? Wieso gibt es keinen Konstruktor?
  View user's profile Private Nachricht senden
caZpa
Account gelöscht


Ort: -

Verfasst Fr 23.09.2005 11:51
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
@caZpa:
Die einzelnen Mailheader müssen (nach dem SMTP-RFC) mit \r\n abgetrennt werden (auf auf Unix-Systemen). Wenn der MTA das anders auch akzeptiert ist es nur Glück. MTAs, die sich streng an den Standard halten, machen das so nicht mit.


gut zu wissen Lächel
 
Anzeige
Anzeige
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 23.09.2005 11:58
Titel

Antworten mit Zitat Zum Seitenanfang

ja es sind meine ersten Gehversuche mit Klassen, darum funzt es ja wahrscheinlich auch net Menno!

ich poste jetzt mal den kompletten Code:
Code:

<?php
include ('inc/nav.inc.php');
include ('inc/formular.inc.php');

$navi = new navi;
$form = new form;

$nav = $_GET['nav'];

$button = $_GET['button'];
$anrede = $_GET['anrede'];
$name = $_GET['name'];
$email = $_GET['email'];
$betreff = $_GET['betreff'];
$text = $_GET['text'];

if ($button == "absenden"){
   $fehler = $form->check($anrede,$name,$email,$betreff,$text);
   
   if(!$fehler){
   $form->email();
   }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>VEKTOR-MASSIVHAUS</title>
<link rel=stylesheet type="text/css" href="css/styles.css">   
</head>
<body>
<table border="0" cellpadding="" cellspacing="0" width="100%" height="100%"><tr align="center"><td valign="top">
<table border="0" cellpadding="1" cellspacing="0" bgcolor="#840707" width="80%" height="100%"><tr><td>
   <table border="0" cellpadding="0" cellspacing="0" bgcolor="white" width="100%" height="100%">
      <!-- rechts -->
      <tr>
         <td valign="top" bgcolor="#840707" width="189px">
            <table border="0" cellpadding="0" cellspacing="0" bgcolor="#840707">
            <tr>
               <td valign="top"><img src="img/re_1.jpg" width="189" height="92" alt="" border="0"></td>
            </tr>
            <tr>
               <td><img src="img/re_2.jpg" width="189" height="174" alt="" border="0"></td>
            </tr>
            <tr>
               <td><img src="img/re_3.jpg" width="189" height="140" alt="" border="0"></td>
            </tr>
            <tr>
               <td><img src="img/re_4.jpg" width="189" height="120" alt="" border="0"></td>
            </tr>
            </table>
         </td>
      <!-- /rechts -->
      
      <!-- links -->
         <td valign="top">
            <table border="0" cellpadding="0" cellspacing="0" width="100%">
            <tr>
               <td><img src="img/slogan.gif" width="521" height="92" alt="" border="0"></td>
            </tr>
            
            <!--NAVI-->
            <tr>
               <td>
               <?php $navi->nav($nav); ?>
               </td>
            </tr>
            <!--/NAVI-->
            
            <!-- SUBNAVI -->
            <tr>
               <?php $navi->sub($nav); ?>
            </tr>
            <!-- /SUBNAVI-->
            
            <!-- CONTENT -->
            <tr>
               <td class="content">
               <table class="form">
                     <form action="kontakt.php?nav=4" method="GET">
                     <tr>
                        <td class="pflicht">Anrede <span style="color:red;">*</span></td>
                        <td><select name="anrede" >
                                                                           <?php
                                                                              $form->anrede($anrede);
                                                                           ?>
                           </select>
                        </td>
                        <td class="error"><?php echo$fehler['anrede']; ?></td>
                     </tr>               
                     <tr>
                        <td class="pflicht">Name <span style="color:red;">*</span></td>
                        <td><input type="text" name="name" class="text" value="<?=$name ?>"/>
                        <input type="hidden" name="nav" value="4" /></td>
                        <td class="error"><?php echo $fehler['name']; ?></td>
                     </tr>
                     <tr>   <td class="ma">Vorname</td>
                        <td><input type="text" name="vorname" class="text" value="<?=$vorname ?>"/></td>
                     </tr>
                     <tr>
                        <td class="ma">Firma</td>
                        <td><input type="text" name="firma" class="text" value="<?=$firma ?>"/></td>
                     </tr>
                     <tr>
                        <td class="pflicht">E-Mail <span style="color:red;">*</span></td>
                        <td><input type="text" name="email" class="text" value="<?=$email ?>"/></td>
                        <td class="error"><?php echo $fehler['email']; ?></td>
                     </tr>
                     <tr>            
                        <td class="ma">Telefon</td>
                        <td><input type="text" name="telefon" class="text" value="<?=$name ?>"/></td>
                     </tr>      
                     <tr>
                        <td class="pflicht">Titel der Nachricht<span style="color:red;">*</span></td>
                        <td><input type="text" name="betreff" class="text" style="width:262;" value="<?=$betreff ?>"/></td>
                        <td class="error"><?php echo $fehler['betreff']; ?></td>
                     </tr>
                     <tr>                     
                        <td class="pflicht">Ihre Nachricht <span style="color:red;">*</span></td>
                        <td ><textarea name="text" rows="10" cols="30" ></textarea></td>
                        <td class="error"><?php echo $fehler['text']; ?></td>
                     </tr>                                                                                 
                     <tr>
                        <td class="ma"></td>
                        <td><input type="submit" name="button" class="submit" value="absenden"/></td>
                     </tr>      
                     <tr>
                        <td class="ma"></td>
                        <td><font size="1">Die mit <span style="color:red;">&nbsp;*</span> gekennzeichneten Felder bitte unbedingt ausfüllen.</font></td>
                     </tr>   
                     </form>                                    
                  </table>
            </tr>
                                    
            <!-- / CONTENT -->
            
            </table>
         </td>
      </tr>
      <!-- /links -->
   </table>
</td></tr></table>
</td></tr></table>
</body>
</html>

      


Code:

<?php

class form {
    function check($anrede,$name,$email,$betreff,$text){
               
                  if($anrede == ""){
                  $fehler['anrede'] = "Bitte wählen Sie eine Anrede aus";
                  }
                  if($name == ""){
                  $fehler['name'] = "Bitte geben Sie einen Namen ein";
                  }
                  if($email == ""){
                  $fehler['email'] = "Bitte geben Sie eine E-Mail Adresse ein";
                  }
                  if($betreff == ""){
                  $fehler['betreff'] = "Bitte geben Sie einen Betreff ein";
                  }
                  if($text == ""){
                  $fehler['text'] = "Bitte geben Sie eine Nachricht ein";
                  }
                  return $fehler; 
           }
         
               
               
           function email(){
                                   
                     mail ("a.schrader@design1220.de","Nachricht von Vektor-Massivhaus.de",
                     "von:$anrede $vorname $name\n\n"
                     ."firma: $firma \n\n"
                     ."email: $email \n\n"
                     ."Betreff:$betreff\n\n "
                     ."Text: $text"
                     );
                     header("Location: form_end.php");
                     exit();
           }
           
           function anrede($anrede){
              
                     if ($anrede == "Frau" ){
                           echo '<option value="Herr">Herr</option><option value="Frau" selected>Frau</option>';
                                           
                     }
                     else{
                           echo '<option value="Herr" selected>Herr</option><option value="Frau" >Frau</option>';   
                     }
           
           }
       
}
?>




@caZpa

meinst du jetzt weil beides mail heißt? ich steh hier grad aufm Schlauch, hab lange nix mehr mit php gemacht und war da nie der Profi:-(
habe die funktion aber mal email genannt ging dann auch net

oder meinste das Leerzeichen hinter mail?
Code:

mail ("a.schrade

hab ich grad weggenommen, geht trotzdem nicht



achso danke erstmal euch allen


Zuletzt bearbeitet von addy am Fr 23.09.2005 12:06, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 39
Geschlecht: Männlich
Verfasst Fr 23.09.2005 12:20
Titel

Antworten mit Zitat Zum Seitenanfang

das kann nicht funktionieren. du versuchst, methoden deines objektes aufzurufen, obwhol es dieses objekt gar nicht gibt.
ein objekt muß erst instantiiert werden, bevor du auf die methoden zugreifen kannst (Es sei denn, man ruft statische Methoden einer Klasse auf).
die klasse ist eine vorlage, wie die objekte gebaut werden sollen. wennn es aber gar kein objket gibt (und du hast keins erstellt), dann kannst du auch nicht die methoden dieses objektes aufrufen.

das sollte in etwa so aussehen:
$objekt = new klasse();
$objekt->methode();

bzw., wenn du mit php4 arbeitest, besser $objekt &= new klasse(); damit nur eine referenz auf das objekt übergeben wird, anstatt alles zu kopieren.

Und wenn du schon mit Klassen arbeitest (,was hier aber irgendwie gar nicht so angebracht scheint, weil du nicht wirklich objektorientiert programmierst, sondern prozedural), dann solltest du dir vorher genau überlegen, was die klasse leisten soll. sinnvollerweise erstellt man eine klasse für eine bestimmte aufgabe und nicht eine klasse, die mails verschickt, formulare überprüft und html-code für anreden schreibt.

und dann sollte deine klasse klassenvariablen erhalten und einen konstruktor mit dem du diese variablen initialisierst.

ich empfehle mal, den OOP-teil im php-handbuch zu lesen.
  View user's profile Private Nachricht senden
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 23.09.2005 12:27
Titel

Antworten mit Zitat Zum Seitenanfang

mmh schade, aber wieso erfüllt er einen teil der funktion (weiterleitung) aber verschickt die mail net das is mir schleierhaft, aber vil liegst halt an meinem Unwissen Menno!

hintergrund der klassen war eigentlich, das ich größtenteils html und php trennen wollte, kann ich denn auch funktionen includen ohne eine Klasse, also einfach ne externe PHP Datei und dann die Funktion aufrufen, wenn ja wie geht das?

wie gesagt bin kein guter PHPer Hmm...?!
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 39
Geschlecht: Männlich
Verfasst Fr 23.09.2005 14:10
Titel

Antworten mit Zitat Zum Seitenanfang

ja, du kannst einfach funktionen in eine php-datei schreiben und diese dann im include() oder require() einbinden. ist gar kein problem...
dazu brauchst du auch keine klassen.


wenn du code und design voneinander trennen willst, dann solltest du das am besten über ein templatesystem machen.
wie du sowas aufbauen kannst, poste ich am montag mal, wenn das dann noch interessiert. jetzt (also genaugenommen schon seit 10 minuten Grins) hab ich erstmal feierabend und wochende... ich gehe nach hause...

ciao und euch allen ein schönes wochenende!
  View user's profile Private Nachricht senden
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Mo 26.09.2005 06:42
Titel

Antworten mit Zitat Zum Seitenanfang

so danke erstmal, ja das würde mich schon interessieren die Sache mit dem Templatesystem, am besten für nen Laien erklärt. Kann mir schon vorstellen wie das ungefähr läuft, denke mal da werden auch die Designelemente ausgelagert und dann einfach nur includet.


zum 2ten Problem:
also ich kann die funktion auslagern, sagen wir in die datei f.php, in der z.B. start.php include ich das dann mit include f.php soweit richtig? Wie spreche ich die funktion dann aber an? Bei den Klassen ja mit $klasse->funktion() , schreib ich jetzt dann anstatt $klasse den Dateinamen???Oder wie läuft das.


achso nochmal zu der Frage mit den Klassen, du sagst hier wären sie nicht angebracht, gut wenn man funktionen einfach so einbinden kann seh ich das ein. Aber für genau was nutzt man denn dann Klassen, wo ist es angebracht, wo nicht?? Wäre nett wenn du mir das auch nochmal kurz in einfachen Worten (Bsp.) erklären kannst oder auch ein anderer!

Besten Dank.
  View user's profile Private Nachricht senden
 
Ähnliche Themen [php] problem mit mail();
php mail() Problem?
[PHP]per PHP generiertes Image direkt weiter per Mail senden
[PHP] E-Mail in DB
[php] mail
mail formular mit php
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.