Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular in Mail und Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formular in Mail und Datenbank

    alle da ihr mir ja schon so einige male geholfen habt hier nun mal wieder eine frage an euch !
    ich hab ein nachrichtensystem für meine seite geschrieben funtioniert auch alles perfekt nur würde ich gern noch hinzufügen das er gleichzeitig eine email an den empfänger schickt !


    Mein nachrichten system funktioniert so

    Alle angemeldetet user können nur dem admin schreiben aber der admin kann allen schreiben ! das nur mal so am rande!

    so hier meine datenbanken die ich verwende

    pns: messageid, uid_von, uid_an, datum, betreff, nachricht, gelesen

    in uid_an: schreibt er den username an den die nachricht geht
    in uid_von schreibt er den usernamen von dem die nachricht kommt


    user:login: UserID, username, passwort, admin, timestamp, online, email

    und so funktionierts :
    Ich arbeite mit dem user login also mit dem namen der, der eingeloggt ist kann nur demjenigen schreiben der im user_login den admin 1 hat und admin 1 kann allen schreiben

    hier der teil vom nachicht senden !

    PHP-Code:
    <?php
    $nachricht  
    $_POST["nachricht"]; 
    $uid_an     $_POST["uid_an"];
    $betreff     $_POST["betreff"];



                
          
    $dateTimedate("Y-m-d H:i:s");  
          
    $insertData mysql_query("INSERT INTO pns (uid_von, uid_an, nachricht, datum, betreff ) VALUE ('{$_SESSION['username']}','{$uid_an}', '{$nachricht}', '{$dateTime}', '{$betreff}')");
    so nun hab ich mir gedacht ich häng ein mail () darunter nur wie realisiere ich das der empfänger nur die mail bekomm die der empfänger im user_login hinterlegt hat !

    hab mal so versucht

    PHP-Code:
    <?php
    $nachricht  
    $_POST["nachricht"]; 
    $uid_an     $_POST["uid_an"];
    $betreff     $_POST["betreff"];



                
          
    $dateTimedate("Y-m-d H:i:s");  
          
    $insertData mysql_query("INSERT INTO pns (uid_von, uid_an, nachricht, datum, betreff ) VALUE ('{$_SESSION['username']}','{$uid_an}', '{$nachricht}', '{$dateTime}', '{$betreff}')");

        
    ?>

    <?php
    $query 
    = @mysql_query("SELECT email FROM user_login WHERE *******");
    while(
    $row mysql_fetch_object($query))
    {
    $mail_empfaenger"$row->email";
    $betreff_1="Sie haben Post";
    $nachricht_1 "Deine neue Nachricht: $nachricht";
    $header  "Logge dich ein um auf diese nachricht zu Antworten";
    mail($mail_empfaenger$betreff_1$nachricht_1$header );
    }
    ?>
    und hier noch das formular

    PHP-Code:
    <form name="sendmesege" action="nachricht_2.php"  method="post">
      <div class="betreff">
          <p>Betreff:<br>
            <label for="betreff"></label>
           &nbsp;&nbsp;&nbsp; <input name="betreff" type="text" id="betreff" value="."><br>
            Nachricht<br>
            <div class="textbox_pn">
      <textarea required name="nachricht" style="width:850px; height:150px;"></textarea><br></div>
            an:<?php
     
        $liste 
    ='';
    $ergbenabf mysql_query("SELECT username, admin, name,email FROM user_login, profil WHERE admin = 1 OR profil.name = '{$_SESSION['username']}'= user_login.admin = 0") or die(mysql_error());
        while (
    $res1 mysql_fetch_array($ergbenabf))
        {
            
    $liste.='<option value="'.$res1['username'].'">'.$res1['username'].'</option>';
        }
     
       echo 
    '<select name="uid_an">'.$liste.'</select>';
    ?>
            <input type="submit" value=" Nachricht Senden" name="send" />
          </p>
        
      </div>
    </form>
    und genau da oben hinter dem WHERE bleib ich hängen und kom nicht weiter
    danke schon mal für euere hilfe
    (bitte bedenken das ist mein erstes selbst gebasteltes nchrichtensystem )
    lg


  • #2
    Hinweis:

    Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
    Choosing an API
    Warum man mysql* generell nicht (mehr) nutzen sollte.
    Wie man von mysql* auf PDO umsteigt
    Wissenswertes zum Thema SQL-Injection

    Es ist nicht mehr zeitgemäß, Anwendungslogik und Ausgabelogik zu kombinieren. Dadurch leidet die Wartbarkeit beider Komponenten. In der Regel folgen in PHP geschriebene Applikationen daher dem EVA-Muster, welches einen leicht nachvollziehbaren Datenfluss ermöglicht, besser wartbare Applikationen erzeugt und leichter von anderen Entwicklern verstanden wird. In der PHP-Welt hat sich hierauf aufbauend das (häufig falsch interpretierte) MVC-Muster [1] etabliert (siehe auch DCI oder ADR). Ganz einfach gesagt handelt es sich bei dem EVA-Muster um eine Aufteilung der Aktionen "Auswertung der Eingabeparameter", "Verarbeitung der damit verknüpften Anwendungslogik" und "Erzeugung und Übermittlung der Ausgabe". Oder vereinfacht: Erst Daten sammeln, dann daraus die Darstellung erzeugen und ausgeben. Die Verwendung einer Templateengine (mit Layout-Support) ist dafür Empfehlenswert - jedoch aber keine Voraussetzung.
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Danke für deine Hinweise werde dies in zukunft berücksichtigen!
      denoch hab ich jetzt keine lust alles noch einmal neu zu schreiben

      Kommentar


      • #4
        mit
        PHP-Code:
        WHERE uid_an username 
        schickt er die mail an alle emailadressen die in user_login hinterlegt sind also an alle user aber er soll ja nur an dem uid_an gehen an dem die mail geht

        Kommentar


        • #5
          SELECT email FROM user_login WHERE user_login.UserID = $uid_an
          ?
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            denoch hab ich jetzt keine lust alles noch einmal neu zu schreiben
            Dir ist schon bewußt das deine Applikation bald nicht mehr funktionieren wird, weil mysql_ "aus PHP" rausfliegt? Da geht es nicht um "keine Lust".

            Weiters noch:
            PHP-Code:
            $query = @mysql_query("SELECT email FROM user_login WHERE *******"); 
            Bitte mach die @ weg, Fehler behandelt man und unterdrückt man nicht.

            Und zu mail():
            Verwender eine Mailerklasse. mail() "roh" zu benutzen fordert eine genaue Einhaltung der RFC, die du hier nicht machst. Daher werden ev. viele deiner Mails nicht versendet oder ankommen. http://php-de.github.io/jumpto/mail-class/

            Zu deinem Problem: Filtere halt auf den User den du brauchst und les das E-Mail-Adressfeld aus. Wo hakts genau?
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              danke für die tips und hinweise ! wie gesagt wenn es mal funktioniert wir es ja an den aktuellen stand angepasst ( so ist der plan ) ich will halt ers mal das die funktionen hinhauen bzw das die mail nur an zu dem user kommen die auch die mail erhalten

              Kommentar

              Lädt...
              X