-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
Merhabalar...
PHPmailler kullanıyorum, koşulsuz gönderi yapan kodları ilk satırı şçyle;
use PHPMailer\PHPMailer\PHPMailer;
Fakat ben bu kodların çalışmasını verilerin post edilmesi şartına bağlamak için else içine koyduğumda başlıktaki hata ortaya çıkıyor.
Nette araştırdım ama henüz çözemedim.
<?php
if (isset($_POST['register']))
{
$test_message_nam=$_POST["message_nam"];
$test_message_ema=$_POST["message_ema"];
$test_message_sub=$_POST["message_sub"];
$test_message_txt=$_POST["message_txt"];
}
else
{
use PHPMailer\PHPMailer\PHPMailer;
...
}
?>
Koda nasıl bir müdahalede bulunmak gerekiyor sizce?
Şimdiden teşekkür ederim...
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
bytokca adlı üyeden alıntı
BEYAZMASTER adlı üyeden alıntı
Merhabalar...
PHPmailler kullanıyorum, koşulsuz gönderi yapan kodları ilk satırı şçyle;
use PHPMailer\PHPMailer\PHPMailer;
Fakat ben bu kodların çalışmasını verilerin post edilmesi şartına bağlamak için else içine koyduğumda başlıktaki hata ortaya çıkıyor.
Nette araştırdım ama henüz çözemedim.
<?php
if (isset($_POST['register']))
{
$test_message_nam=$_POST["message_nam"];
$test_message_ema=$_POST["message_ema"];
$test_message_sub=$_POST["message_sub"];
$test_message_txt=$_POST["message_txt"];
}
else
{
use PHPMailer\PHPMailer\PHPMailer;
...
}
?>
Koda nasıl bir müdahalede bulunmak gerekiyor sizce?
Şimdiden teşekkür ederim...
Kodları temizlemeden post ederseniz hacklenirsiniz.
Şu şekilde birşey istiyorsunuz sanırım.
<form role="form" action="form_submit.php" method="POST" name="FormInformation">
<input type="hidden" name="RegisterForm" value="FormInformation" />
<label>Adınız</label>
<input type="text" name="yourname"/>
<label>Telefon Numaranız</label>
<input type="text" name="yourphone"/>
<label>E-posta Gönderilsin</label>
<input type="checkbox" value="0" name="checkbox"/>
</form>
form_submit.php
function temizlikYap( $str ) {
if (! empty($str)) {
$str = trim( $str );
$str = strip_tags( $str );
$str = htmlspecialchars( stripslashes( $str ));
$str = htmlentities( $str );
return $str;
}
}
if ((isset($_POST["RegisterForm"])) && ($_POST["RegisterForm"] == "FormInformation")) { //post edilen RegisterForm FormInformation a eşitse işlemleri başlat.
$checkbox = filter_input(INPUT_POST, 'checkbox', FILTER_SANITIZE_NUMBER_INT);
$adiniz = temizlikYap($_POST['yourname']);
$telefonunuz = temizlikYap($_POST['yourphone']);
// Veritabanına kaydedilecekse --> INSERT INTO table
if(isset($checkbox)){
// E-posta gönderme bilgileri.
use PHPMailer\PHPMailer\PHPMailer;
// PHPMailer güncel sınıfı -> https://github.com/PHPMailer/PHPMailer
}
}
Baştada dediğim gibi kodlar temizlenmeden gönderilmez.
CSRF, XSS açıklarını yok ettiğinizden emin olun.
Üstadım çok teşekkür ediyorum detaylı cevabınız ve kod için...
Birazdan deneyip sonucu paylaşacağım...
Deneme sonrası;
Temizlik fonsiyonunu başta oluşturmak alttaki kodları daha sade kılmış, elinize sağlık...
Email gönder checkbox'ını hangi durumlarda kullanmak gerekir diye hala düşünüyorum, varlık sebebini açıklayabilirseniz sevinirim...
Konunun çıkış noktası olan;
Parse error: syntax error, unexpected 'use' (T_USE) sorunu ise hala devam etmekte üstadım... : (
Yeni öğrenen biri olarak benim yapamamam normalniş... : )
Küçük bir dokunuş gerek ama ne1?
Mesaj 1 defa düzenlendi. Son düzenleyen: BEYAZMASTER (04.05.2022 16:56)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
bytokca adlı üyeden alıntı
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
function temizlikYap( $str ) {
if (! empty($str)) {
$str = trim( $str );
$str = strip_tags( $str );
$str = htmlspecialchars( stripslashes( $str ));
$str = htmlentities( $str );
return $str;
}
}
if ((isset($_POST["RegisterForm"])) && ($_POST["RegisterForm"] == "FormInformation")) { //post edilen RegisterForm FormInformation a eşitse işlemleri başlat.
$checkbox = filter_input(INPUT_POST, 'checkbox', FILTER_SANITIZE_NUMBER_INT);
$adiniz = temizlikYap($_POST['yourname']);
$telefonunuz = temizlikYap($_POST['yourphone']);
// Veritabanına kaydedilecekse --> INSERT INTO table
if(isset($checkbox)){
// Detaylı bilgi ve PHPMailer güncel sınıfı -> https://github.com/PHPMailer/PHPMailer
try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.example.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'user@example.com'; //SMTP username
$mail->Password = 'secret'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient
$mail->addAddress('ellen@example.com'); //Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
//Attachments
$mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
}
}
Kolama yapınızı bu şekilde kendinize göre ayarlayın. Yinede sorun yaşıyorsanız, PHPMailer sınıfını ve dosyalarını silin.
Sonra https://github.com/PHPMailer/PHPMailer bu linke girin. PHPMailer sınıfını tekrar indirin. Sayfada aşağıya doğru indiğinizde PHPMailer sınıfının nasıl kullanıldığını ve bir demo kodlarını göreceksiniz. Kendi projenize göre editlersiniz.
Üstadım çözüme ulaşana kadar verdiğiniz destek için çok teşekkür ediyorum...
Elinize emeğinize sağlık, şu anda çalışır hale geldi...
&
Ek olarak şunları söylemeliyim & söyleyebilirim & sormalıyım;
* PHPmailler'in birkaç gün önce indirdiğim en son versiyonu kullanıyordum, versiyon farkı yok diyebiliriz.
* Şu 3 dosyayı en başından beri include etmiş durumdaydım;
require "PHPMailer_masterl/src/Exception.php";
require "PHPMailer_masterl/src/PHPMailer.php";
require "PHPMailer_masterl/src/SMTP.php";
Bu 3 dosyayı include etmek zorunlu sanırım...!?
* Şu 3 satırı en üste almak sanırım yaşadığım problemin çözümü oldu;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
Bu 3 satırı yazmak zorunlu mu sizce?
Formsuz ve şartsız test dosyamda sadece ilk satır vardı ve gönderim yapıyordu...!?
2. ve 3.satırın varlık sebebini anlayamadım...
Ve neden alt satırlarda iken çalışmıyordu hala benim için bir muamma olmaya devam ediyor... !?
Bu 3 satırım altındaki dosya son sürümde yok o yüzden include edemedim;
require 'vendor/autoload.php';
Yokken de çalışıyor, neden var ve fonksiyonu nedir bu da muamma benim açımdan... !?
Alt satırlarla ilgili merak ettiğim birkaç husus olsa da sizi yormamak için gündeme getirmeyeceğim...
Fakat şunu pas geçemem;
Ggithub.com'daki örnekte şu satır var, doğrudur:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
Benim test örneğimdeki kodlar arasında ise onun yerine şu satır var;
$mail->SMTPSecure = "tls";
Hangisi daha doğru ve ideal değerlendiremiyorum...!?
Bahsettiğim test örneğini şu detaylı makaleden edinmiştim;
https://muhammedyaman.com/phpmailer-kullanimi-php-smtp-mail-gonderme/
ARADAKİ FARKLARI DA TAM KIYASLAYAMIYORUM KONUYA TAM HAKİ OLMADIĞIM İÇİN...
Son bir soru ile bitireyim üstadım;
Githubdan master dosyasını defalarca indirmeme rağmen zip içinden sadece src, ve language klasörleri çıkıyor.
https://github.com/PHPMailer/PHPMailer adresinde gözüken diğer klasörler çıkmıyor!
Bunun da nedenini çözemedim...!?
Kök dizindeki dosyaların ne olduğunu, özellikle de get_oauth_token.php dosyasının ne olduğunu sormuyorum artık...
Hem üstteki faydalı yanıtları verirken ve hem de bu uzun cevabımı okurken yeterince vaktinizi aldım.
Üstte değinmi olduğum noktalara ışık tutmak için vaktiniz kalmamış olabilir...
Hiç sorun değil...
Saygıyla karşılarım...
SON GÜNLERDEKİ TÜM KATKILARINIZ İÇİN TOPLUCA TEŞEKKÜR EDİYORUM...
ALLAH RAZI OLSUN...
Mesaj 1 defa düzenlendi. Son düzenleyen: BEYAZMASTER (04.05.2022 19:44)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.