Vinnaren i pepparkakshustävlingen!
2021-02-09, 14:43
  #1
Medlem
Jag har fått följande att fungera: https://phppot.com/php/user-registra...code-download/

Efter registreringen vill jag skicka ett email vilka jag har gjort tidigare med med ex phpMailer. Dock vill jag försöka hålla en bra struktur så frågan är var jag ska placera kod för att skicka mail efter registreringen. Aningen bygger jag en ny funktion inne i Member.php även om jag tycker att det inte känns som att det riktigt hör hemma där. Eller ska jag skapa en ny phpmodell ex email.php och anropa den efter member.php i user-registration.php överst på något sätt där koden ser ut såhär

Kod:
<?php
use Phppot\Member;
if (! empty(
$_POST["signup-btn"])) {
    require_once 
'./Model/Member.php';
    
$member = new Member();
    
$registrationResponse $member->registerMember();
}
?>
<HTML>
<HEAD>
<TITLE>User Registration</TITLE>
<link href="assets/css/phppot-style.css" type="text/css"
    rel="stylesheet" />
<link href="assets/css/user-registration.css" type="text/css"
    rel="stylesheet" />
<script src="vendor/jquery/jquery-3.3.1.js" type="text/javascript"></script>
</HEAD>
__________________
Senast redigerad av help 2021-02-09 kl. 14:46.
Citera
2021-02-09, 14:46
  #2
Medlem
Jag hade lagt den i en separat fil, och sedan anropat den som en funktion med en require_once. Hade också lagt in en checksumma så att ingen robot/bot eller annat skräp kan använda sig av filen. Kan ju t.ex. lägga med något hashvärde i antingen form action, alternativt i en hidden form-input. Anropet gör du lämpligen via en separat fil som får hantera den, för att undvika problem med page-refresh. Efter att det skickats blir man redirectad tillbaka till formuläret, eller annan sida.
Citera
2021-02-10, 13:27
  #3
Medlem
Citat:
Ursprungligen postat av DJ-Emerald
Jag hade lagt den i en separat fil, och sedan anropat den som en funktion med en require_once. Hade också lagt in en checksumma så att ingen robot/bot eller annat skräp kan använda sig av filen. Kan ju t.ex. lägga med något hashvärde i antingen form action, alternativt i en hidden form-input. Anropet gör du lämpligen via en separat fil som får hantera den, för att undvika problem med page-refresh. Efter att det skickats blir man redirectad tillbaka till formuläret, eller annan sida.

Tack, men var (och lite hur)? Ska jag lägga det i mappen models? Fast det är ju inte riktigt en modell (som frågorna till databasen är).

Såhär ser filstrukturen ut: https://phppot.com/wp-content/upload...-structure.jpg

Var i den ska jag skapa en fil där jag lägger koden nedan (kod nedkortad)

Kod:
use PHPMailer\PHPMailer\PHPMailer;
use 
PHPMailer\PHPMailer\Exception;

require 
'PHPMailer/Exception.php';
require 
'PHPMailer/PHPMailer.php';
require 
'PHPMailer/SMTP.php';

$Mail = new PHPMailer//Argument true in constructor enables exceptions

$Mail->From "noreplay@company.com";
$Mail->FromName "noreplay";
$Mail->addAddress($departmentEmail); // To address and name
$Mail->addReplyTo($senderEmail); // Address to which recipient will reply
$Mail->isHTML(true); // Send HTML or Plain Text email
$Mail->CharSet 'UTF-8'
Citera
2021-02-10, 15:25
  #4
Medlem
Citat:
Ursprungligen postat av help
Tack, men var (och lite hur)? Ska jag lägga det i mappen models? Fast det är ju inte riktigt en modell (som frågorna till databasen är).

Såhär ser filstrukturen ut: https://phppot.com/wp-content/upload...-structure.jpg

Var i den ska jag skapa en fil där jag lägger koden nedan (kod nedkortad)

Kod:
use PHPMailer\PHPMailer\PHPMailer;
use 
PHPMailer\PHPMailer\Exception;

require 
'PHPMailer/Exception.php';
require 
'PHPMailer/PHPMailer.php';
require 
'PHPMailer/SMTP.php';

$Mail = new PHPMailer//Argument true in constructor enables exceptions

$Mail->From "noreplay@company.com";
$Mail->FromName "noreplay";
$Mail->addAddress($departmentEmail); // To address and name
$Mail->addReplyTo($senderEmail); // Address to which recipient will reply
$Mail->isHTML(true); // Send HTML or Plain Text email
$Mail->CharSet 'UTF-8'

Jag föreslår att du lägger den utanför det publika webbträdet. Skapa t.ex. en egen mapp under rotkatalogen. Du kan hänvisa till den precis som vanligt med vanliga relativa länkhänvisningar. Finns ju ingen anledning till att man ska ha möjlighet att "surfa" till filen om dess enda användning består av dina interna funktioner.
__________________
Senast redigerad av DJ-Emerald 2021-02-10 kl. 15:27.
Citera
2021-02-10, 19:38
  #5
Medlem
SKetchers avatar
Baka in den i en klass eller liknande. Placera library-aktigt någonstans separat.

Kod:
class Mailer{
    
    private 
$mail;

    public function 
__construct(){
        
$this->mail = new PHPMailer();
    }
    
    public static function 
SendRegistration(){
       
// Kod med $this->mail
    
}


Kan kallas där du behöver den.

Kod:
//require_once('../../Mailer.php')
$mailer = new Mailer();
$mailer->SendRegistration(); 
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback