lostyazilim
tr.link

Üyelik Sistemi / SMTP Mail / Yazım

19 Mesajlar 2.337 Okunma
acebozum
tr.link

caylaq caylaq WM Aracı Kullanıcı
  • Üyelik 20.03.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Serbest Meslek
  • Konum İstanbul Avrupa
  • Ad Soyad Y** T**
  • Mesajlar 394
  • Beğeniler 74 / 25
  • Ticaret 1, (%100)
1 gece uğraştık, baka baka yazdık ama localden sayfaya ulaşamıyoruz :)

Local Konumu: AppServ/www/mailactive < aynı veritabanı (tablo ise members)

index.php:

include "connect.php";

if(isset($_POST['reg'])){

require_once "mail/class.phpmailer.php";

$name = $_POST['name'];
$mail = $_POST['pass'];
$pass = $_POST['pass'];
$passmd = md5($pass);
$active = uniqid(prefix: 'deneme');

if(!$name || !$mail || !$pass){
echo "Fill!";
}else{
if(!filter_var($mail, filter: FILTER_VALIDATE_EMAİL)){
echo "mail problem!";
}else{

//reg need perm = 2
//reg with =1 it was permed
$register = $db->prepare( statement: "INSERT INTO members SET
name =:n,
mail =:m,
pass =:p,
active =:a,
perm =:r

");

$register->execute([':n'=>$name,':m'=>$mail,':p'=>$passmd,':a'=>$active,':r'=>2]);

if($register){

$mail = new PHPMailer();
$mail-> Host = "smtp.yandex.com";
$mail-> Port = 587; //ssl for 465 ssl not 587
$mail-> SMTPSecure = 'tls'; //if ssl direct wrote / if empty tls will..
$mail-> SMTPAuth = true; //will not change
$mail-> Username = "admin@admin.com" ;
$mail-> Password = "deneme";
$mail-> IsSMTP();
$mail-> AddAddress($mail);
$mail-> From = "admin@admin.com";
$mail-> FromName = "Account Verification";
$mail-> CharSet = "UTF-8";
$mail-> Subject = "Activation Link";

$activationlink = "http://localhost/mailactive/activation.php?code=".$activationlink;
$mailcontent = "
Activation link : ".$activationlink."
";

$mail-> MsgHTML($mailcontent);

if($mail->Send()){
echo "Mail activation is sended!";
}else{
echo "Error!";
}

}else{
echo "Fail!";
}


}

}

?>



















connect.php:




try{

$db=new PDO("mysql:host=localhost;dbname=mailactive;charset=utf8",'root','12345678');
echo "u did it bro"
}

catch (PDOException $error){
print_r($error->getMessage());
}

?>
 

 

Hep daha ileriye!
wmaraci
reklam

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Tam olarak ne hata alıyorsunuz bilmiyorum. ama şurası yanlış;
$mail-> AddAddress($mail);
burada $mail nesnesini ekleyemezsiniz. Orası string türünden referans alır, oraya mail adresi eklemeniz gerekiyor.
Örnek:
$mail-> AddAddress("isim@mail.com");
 

 

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Tamam hatayı farkettim sanırım.
Önce $mail değişkenine kullanıcı post ettiği veriyi atamışsınız, sonra aynı değişken adı için $mail nesnesi tanımlamışsınız.
Bu değişkenin birinin adını değiştirin. Mesela kullanıcıdan post aldığınız kısımdaki $mail değişkeninin adını $email olarak değiştirin;
$email = $_POST['pass'];
 

 

caylaq caylaq WM Aracı Kullanıcı
  • Üyelik 20.03.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Serbest Meslek
  • Konum İstanbul Avrupa
  • Ad Soyad Y** T**
  • Mesajlar 394
  • Beğeniler 74 / 25
  • Ticaret 1, (%100)
Valla hocam safi sorun, mesele ki sorun çıksın. Bu sefer de "beklenmedik kapanış" php nası kapanır ki ? ?> bu kadar.

Name - Nick - Pass ve password sorunu birbirine girdi iyice, diğer türlü de ayrıştırmıyo. En son şöyle bişey çıkardım farklı bir kaynaktan:

index.php:








PDO | REG







































register.php:

$db = new PDO("mysql:host=localhost;dbname=mailactive;charset=utf8", "root", "");

$nick = $_POST['nick'];
$mail = $_POST['mail'];
$password = $_POST['password'];

if (!$nick || !$mail || !$password) {
die("Fill");
}

$add = $db->prepare("INSERT INTO members SET nick = ?, mail = ?, password = ?");
$add->execute([$nick, $mail, $password]);

if ($add) {
echo "Success";
}else {
echo "Error";
}


login.php:

$db = new PDO("mysql:host=localhost;dbname=mailactive;charset=utf8", "root", "");

$nick = $_POST['name'];
$password = $_POST['password'];

if (!$nick || !$nick){
die("failed");
}

$user = $db->prepare("SELECT * FROM members WHERE nick = '$nick' AND password = '$password'");

if ($user) {
var_dump($user);
}else {
echo "Failed";
}



Bu sefer de login de tıkandık :) Kayıtlı kullanıcıyı bulamıyo veya "name - nick" "password" uyarısı veriyo satırlardan
 

 

Hep daha ileriye!
wmaraci
wmaraci

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Sorgu kısmını şöyle deneyin;
$user = $db->prepare("SELECT * FROM members WHERE nick = \' $nick\' AND password =\ '$password\'");
 

 

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Oradaki tek tırnak içerisindeki değişkenler büyük ihtimalle doğrudan değişken adı olarak görünüyor. Değişken değeri olarak algılanmıyor.
 

 

caylaq caylaq WM Aracı Kullanıcı
  • Üyelik 20.03.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Serbest Meslek
  • Konum İstanbul Avrupa
  • Ad Soyad Y** T**
  • Mesajlar 394
  • Beğeniler 74 / 25
  • Ticaret 1, (%100)
object(PDOStatement)#2 (1) { ["queryString"]=> string(65) "SELECT * FROM members WHERE name = \'123\' AND password =\ '123\'" }

Böyle bir uyarı verdi hocam. Anlatımda e-mail de gösteriyo bu uyarı içinde. Direkt sorun gibi değil ama algılamadı gibi pek.

Username olarak hepsine "name" atadım "password" için de keza fix "password" Password da önceki \'ı eşittir bitimine koymuşsunuz ona kadar dikkat ettim.
 

 

Hep daha ileriye!

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Tamam
$user = $db->prepare("SELECT * FROM members WHERE nick = '".$nick."' AND password = '".$password."'");
 

 

kaptann kaptann WM Aracı Banlı Kullanıcı
  • Üyelik 01.02.2014
  • Yaş/Cinsiyet 36 / E
  • Meslek Tekniker
  • Konum Giresun
  • Ad Soyad S** K**
  • Mesajlar 229
  • Beğeniler 76 / 75
  • Ticaret 1, (%100)
Bu kez olmuş olması lazım.
 

 

caylaq caylaq WM Aracı Kullanıcı
  • Üyelik 20.03.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Serbest Meslek
  • Konum İstanbul Avrupa
  • Ad Soyad Y** T**
  • Mesajlar 394
  • Beğeniler 74 / 25
  • Ticaret 1, (%100)
Tamamdır hocam, ama session ve welcome olayu bu sefer olmadı. Else çalıştırıyo sürekli
 

 

Hep daha ileriye!
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al