Ergebnis 1 bis 3 von 3

Thema: Sprachendatei in 'externes' Skript laden

  1. #1
    Azubi(ne) Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard Sprachendatei in 'externes' Skript laden

    Guten Morgen allerseits!

    Auf meiner Website ermögliche ich mit Sessions eine Sprachenauswahl.
    index.php:
    Code:
    //Language-Session    
        if(!isset($_GET["language"]))
        {
            if(!isset($_SESSION["language"]))
            {
                include('_include/lang/de.php');
                $_SESSION["language"] = 'de';
            }
            else
            {
                include('_include/lang/' . $_SESSION["language"]  . '.php');
            }
        }
        else
        {
            $_SESSION["language"] = $_GET["language"];
            include('_include/lang/' . $_SESSION["language"]  . '.php');
        }
    
    //End of Language-Session
    
    Nun will ich diese Sprachdateien auch in einem Mailing-Script verfügbar machen, welches nicht direkt in die Website eingebunden, sondern per Ajax angesprochen wird.

    Der Ajax-Teil:
    Code:
    /* ==================================================
       Contact Form
    ================================================== */
    
    BRUSHED.contactForm = function(){
        $("#contact-submit").on('click',function() {
            $contact_form = $('#contact-form');
            
            var fields = $contact_form.serialize();
            
            $.ajax({
                type: "POST",
                url: "_include/php/contact.php",
                data: fields,
                dataType: 'json',
                success: function(response) {
                    
                    if(response.status){
                        $('#contact-form input').val('');
                        $('#contact-form textarea').val('');
                    }
                    
                    $('#response').empty().html(response.html);
                }
            });
            return false;
        });
    
    }
    
    Und hier das aktuelle Mailing-Script, welches übersetzt werden soll:
    Code:
    <?php
    
        header('Cache-Control: no-cache, must-revalidate');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Content-type: application/json');
    
        require_once ('db_connect.php');
        $statement = $db->query('SELECT mail_contact FROM settings');
        $admin_email = $statement->fetch()['mail_contact'];
    
        $message_min_length = 5;
    
        //PHPmailer v6 Setup
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
        require 'Exception.php';
        require 'PHPMailer.php';
        require 'SMTP.php'; 
    
        class Contact_Form 
        {
            function __construct($details, $admin_email, $message_min_length) 
            {
                $this->name = stripslashes($details['name']);
                $this->email = trim($details['email']);
                $this->subject = 'Blechlavine.com - Kontaktnachricht eingegangen';
                $this->message = stripslashes($details['message']);
                $this->admin_email = $admin_email;
                $this->message_min_length = $message_min_length;
                $this->response_status = 1;
                $this->response_html = '';
            }
    
            private function validateEmail() 
            {
                $regex ='/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
    
                if ($this->email == '')
                    return false;
    
                $string = preg_replace($regex, '', $this->email);
                return empty($string);
            }
    
            private function validateFields() 
            {
                // Check name
                if(!$this->name) 
                {
                    $this->response_html .= '<p>'.$lang['contact_errorname'].'</p>';
                    $this->response_status = 0;
                }
    
                // Check email
                if(!$this->email) 
                {
                    $this->response_html .= '<p>'.$lang['contact_erroremail'].'</p>';
                    $this->response_status = 0;
                }
    
                // Check valid email
                if( $this->email &&!$this->validateEmail() ) 
                {
                    $this->response_html .= '<p>'.$lang['contact_erroremail2'].'</p>';
                    $this->response_status = 0;
                }
    
                // Check message length
                if(!$this->message || strlen($this->message) < $this->message_min_length) 
                {
                    $this->response_html .= '<p>'.$lang['contact_errormessage'].'</p>';
                    $this->response_status = 0;
                }
            }
    
    
            private function sendEmail() 
            {
                //PHPmailer v6 Instanz
                $oMailer = new PHPMailer;
                $oMailer->CharSet = 'UTF-8';
    
                // SMTP aktivieren
                $oMailer->isSMTP();
    
                // SMTP-Server
                $oMailer->Host ='smtp.strato.de';
    
                // SMTP Authentifizierung aktivieren
                $oMailer->SMTPAuth = true;
    
                // SMTP Benutzer
                $oMailer->Username = $this->admin_email;
    
                // SMTP Benutzer Passwort
                $oMailer->Password = 'xxxxxx';
    
                // Verbindungssicherheit setzen ( SSL und TLS möglich )
                $oMailer->SMTPSecure = 'ssl';
    
                // Verbindungsport festlegen
                $oMailer->Port = 465;
    
                // Absender Adresse setzen
                $oMailer->From = $this->email;
    
                // Absender Alias setzen
                $oMailer->FromName = $this->name;
    
                // Empfänger Adresse und Alias hinzufügen
                $oMailer->addAddress($this->admin_email, 'Webmaster Blechlavine'); 
    
                // HTML aktivieren
                $oMailer->isHTML(true);
    
                // Betreff
                $oMailer->Subject = 'Blechlavine.com - Nachricht eingegangen';
    
                // Der Nachrichteninhalt als HTML
                $oMailer->Body = $this->message;
    
                // Alternativer Nachrichteninhalt für Clients, die kein HTML darstellen
                $oMailer->AltBody = strip_tags($oMailer->Body);
    
    
                //PHPmailer v6 Versand prüfen
                if(!$oMailer->send()) 
                {
                    $this->response_html .= '<p>'.$lang['contact_erroremail'].'</p>';
                    $this->response_status = 0;
                }
                else 
                {
                    $this->response_status = 1;
                    $this->response_html .= '<p>'.$lang['contact_success'].'</p>';
                    exit;
                } 
            }
    
            public function sendRequest() 
            {
                $this->validateFields();
                
                if($this->response_status)
                    $this->sendEmail();
    
                $response = array();
                $response['status'] = $this->response_status;   
                $response['html'] = $this->response_html;
    
                echo json_encode($response);
            }
        }
    
        $contact_form = new Contact_Form($_POST, $admin_email, $message_min_length);
        $contact_form->sendRequest();
    
    ?>
    
    Wie mach ich die Übersetzung möglich?

    Vielen Dank für eure Unterstützung!
    Mir raucht der Gulliver

  2. #2
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.638
    Danke
    24
    Bekam 138 mal "Danke" in 137 Postings

    Standard AW: Sprachendatei in 'externes' Skript laden

    Zur Frage: Im Mailing-Skript einfach auch session_start(); verwenden und Du hast Zugriff auf die Session-Variablen.

    Nur mal als Anregung: Bevor ich mit IF-Ketten arbeite, nutze ich bspw. die Array-Funktionen von PHP:
    PHP-Code:
    $languages array_filter([
        
    'de',
        
    $_GET['language'] ?? null,
        
    $_SESSION['language'] ?? null
      
    ]);

    $_SESSION['language'] = end$languages );
    include_once 
    '_include/lang/' $_SESSION['language'] . '.php'
    Bei mir habe ich noch eine Routine drin, die anhand des User-Agent die primäre Sprache versucht herauszufinden. Das Ergebnis packe ich mit in das array_filter().
    Hinterher habe ich in $languages nur gültige Werte und übernehme den letzten Eintrag in die Session. Das setzt natürlich voraus, dass die Elemente im array_filter() nach Prio aufsteigend sortiert sind, damit der letzte die höchste hat.


    EDIT: Korrigiert von array_map() auf array_filter()
    Geändert von Arne Drews (14.11.2018 um 11:23 Uhr)

  3. #3
    Azubi(ne)
    Themenstarter
    Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Sprachendatei in 'externes' Skript laden

    Hat geholfen, führt mich aber wieder zu einem anderen Thema.

    Deine Anregung werde ich nach dieser Odyssey umsetzen.
    Danke!

    Code:
    <?php
        session_start();
    
        header('Cache-Control: no-cache, must-revalidate');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Content-type: application/json');
    
        require_once ('db_connect.php');
    
        //Language-Session
        if(!isset($_GET["language"]))
        {
            if(!isset($_SESSION["language"]))
            {
                include('../lang/de.php');
                $_SESSION["language"] = 'de';
            }
            else
            {
                include('../lang/' . $_SESSION["language"]  . '.php');
            }
        }
        else
        {
            $_SESSION["language"] = $_GET["language"];
            include('../lang/' . $_SESSION["language"]  . '.php');
        }
        //End of Language-Session
        $contact_errorname = $lang['contact_errorname'];
        $contact_erroremail = $lang['contact_erroremail'];
        $contact_erroremail2 = $lang['contact_erroremail2'];
        $contact_errormessage = $lang['contact_errormessage'];
        $contact_fail = $lang['contact_fail'];
        $contact_success = $lang['contact_success'];
    
        $statement = $db->query('SELECT mail_contact FROM settings');
        $admin_email = $statement->fetch()['mail_contact'];
    
        $message_min_length = 5;
    
        //PHPmailer v6 Setup
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
        require 'Exception.php';
        require 'PHPMailer.php';
        require 'SMTP.php'; 
    
        class Contact_Form 
        {
            function __construct($details, $admin_email, $message_min_length, $contact_errorname, $contact_erroremail, $contact_erroremail2, $contact_errormessage, $contact_fail, $contact_success) 
            {
                $this->name = stripslashes($details['name']);
                $this->email = trim($details['email']);
                $this->subject = 'Blechlavine.com - Kontaktnachricht eingegangen';
                $this->message = stripslashes($details['message']);
                $this->admin_email = $admin_email;
                $this->message_min_length = $message_min_length;
                $this->response_status = 1;
                $this->response_html = '';
                $this->contact_errorname = $contact_errorname;
                $this->contact_erroremail = $contact_erroremail;
                $this->contact_erroremail2 = $contact_erroremail2;
                $this->contact_errormessage = $contact_errormessage;
                $this->contact_fail = $contact_fail;
                $this->contact_success = $contact_success;
    
            }
    
            private function validateEmail() 
            {
                $regex ='/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
    
                if ($this->email == '')
                    return false;
    
                $string = preg_replace($regex, '', $this->email);
                return empty($string);
            }
    
            private function validateFields() 
            {
                // Check name
                if(!$this->name) 
                {
                    $this->response_html .= '<p>' . $this->contact_errorname . '</p>';
                    $this->response_status = 0;
                }
    
                // Check email
                if(!$this->email) 
                {
                    $this->response_html .= '<p>' . $this->contact_erroremail . '</p>';
                    $this->response_status = 0;
                }
    
                // Check valid email
                if( $this->email &&!$this->validateEmail() ) 
                {
                    $this->response_html .= '<p>' . $this->contact_erroremail2 . '</p>';
                    $this->response_status = 0;
                }
    
                // Check message length
                if(!$this->message || strlen($this->message) < $this->message_min_length) 
                {
                    $this->response_html .= '<p>' . $this->contact_errormessage . '</p>';
                    $this->response_status = 0;
                }
            }
    
    
            private function sendEmail() 
            {
                //PHPmailer v6 Instanz
                $oMailer = new PHPMailer;
                $oMailer->CharSet = 'UTF-8';
    
                // SMTP aktivieren
                $oMailer->isSMTP();
    
                // SMTP-Server
                $oMailer->Host ='smtp.strato.de';
    
                // SMTP Authentifizierung aktivieren
                $oMailer->SMTPAuth = true;
    
                // SMTP Benutzer
                $oMailer->Username = $this->admin_email;
    
                // SMTP Benutzer Passwort
                $oMailer->Password = 'xxxxx';
    
                // Verbindungssicherheit setzen ( SSL und TLS möglich )
                $oMailer->SMTPSecure = 'ssl';
    
                // Verbindungsport festlegen
                $oMailer->Port = 465;
    
                // Absender Adresse setzen
                $oMailer->From = $this->email;
    
                // Absender Alias setzen
                $oMailer->FromName = $this->name;
    
                // Empfänger Adresse und Alias hinzufügen
                $oMailer->addAddress($this->admin_email, 'Webmaster Blechlavine'); 
    
                // HTML aktivieren
                $oMailer->isHTML(true);
    
                // Betreff
                $oMailer->Subject = 'Blechlavine.com - Nachricht eingegangen';
    
                // Der Nachrichteninhalt als HTML
                $oMailer->Body = $this->message;
    
                // Alternativer Nachrichteninhalt für Clients, die kein HTML darstellen
                $oMailer->AltBody = strip_tags($oMailer->Body);
    
    
                //PHPmailer v6 Versand prüfen
                if(!$oMailer->send()) 
                {
                    $this->response_html .= '<p>' . $this->contact_fail . '</p>';
                    $this->response_status = 0;
                }
                else 
                {
                    $this->response_status = 1;
                    $this->response_html .= '<p>' . $this->contact_success . '</p>';
                    exit;
                } 
            }
    
            public function sendRequest() 
            {
                $this->validateFields();
                
                if($this->response_status)
                    $this->sendEmail();
    
                $response = array();
                $response['status'] = $this->response_status;   
                $response['html'] = $this->response_html;
    
                echo json_encode($response);
            }
        }
    
        $contact_form = new Contact_Form($_POST, $admin_email, $message_min_length, $contact_errorname, $contact_erroremail, $contact_erroremail2, $contact_errormessage, $contact_fail, $contact_success);
        $contact_form->sendRequest();
    
    ?>
    
    Geändert von Sysmatic (14.11.2018 um 15:29 Uhr)
    Mir raucht der Gulliver

Ähnliche Themen

  1. Werbung über externes CSS einbinden
    Von Busdriver im Forum HTML & CSS Forum
    Antworten: 0
    Letzter Beitrag: 21.04.2017, 16:46
  2. Externes Programm aufrufen
    Von enfrea im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 25.02.2009, 11:09
  3. Externes Laufwerk
    Von computer-freak im Forum Computer - Internet Forum
    Antworten: 1
    Letzter Beitrag: 29.01.2009, 11:11
  4. Externes Menü, aber wie?
    Von Rebekka im Forum Script-Archiv
    Antworten: 1
    Letzter Beitrag: 19.11.2006, 18:34
  5. TS² Externes Interface
    Von Gigazone im Forum Computer - Internet Forum
    Antworten: 5
    Letzter Beitrag: 07.02.2006, 20:13

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •