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.