Aşağıda olan kodu çalıştığım kitaptan aldım.
1-localhost'da denedim. Çalışıyor.
2-E-Postaların dışında Ad ve Soyad girildiğinde de kaydediyor. Bu büyük bir sorun.
Soru-1: E_Postalara özgü "@" karekteri olmadan veya eposta sonundaki ".com" eki olmadan girilen bilgileri kabul etmeyen bir ekleme yapabilirmiyiz. Yapabilirsek yeri-konumu neresi olmalıdır ?
Soru-2: Geçersiz E-Posta sorunu aşıldığında, Bu kodların yeni hali ile ziyaretçinin oturum açabilmesi için ek dosya mı oluşturmak gerekir veya bu kodlara ekleme mi gerekir ?
Vereceğiniz bilgi için şimdiden teşekkür ederim.
<?php
//birkac fonksiyon hazirla
function doDB () {
global $conn;
//sunucuya baglan ve veritabanini sec; ihtiyaciniz olabilir
$conn = mysql_connect("localhost" , "root" , "")
or die(mysql_error());
mysql_select_db("bilgiDB" ,$conn) or die(mysql_error());
}
function emailChecker ($email) {
global $conn, $check_result;
//e-postanin listede zaten olup olmadigini kontrol et
$check = "select id from epostakaydi where email = '$email'";
$check_result = mysql_query ($check,$conn) or die(mysql_error());
}
//kullanicilarin formu gormeleri gerekip gerekmedigini belirle
if ($_POST[op] != "ds") {
//gerekiyor, oyleyse form blogunu olustur
$display_block = "
<form method=POST action=\"$_SERVER[PHP_SELF]\">
<p><strong>E-Posta Adresiniz:</strong><br />
<input type=text name=\"email\" size=40 maxlength=150>
<p><strong>Action:</strong><br />
<input type=radio name=\"action\" value=\"sub\" checked>kayıt ol
<input type=radio name=\"action\" value=\"unsub\"> kayıttan çık
<input type=\"hidden\" name=\"op\" value=\"ds\">
<p><input type=submit name=\"submit\" value=\"Gönder\"></p>
</form>";
} else if (($_POST[op] == "ds") && ($_POST[action] == "sub")) {
//abone olmaya calisiliyor, e-posta adresinin gecerliligini kontrol et
if ($_POST[email] == "") {
header("Location: emailyonet.php");
exit;
}
//veritabanina baglan
doDB();
//e-postanin listede olup olmadigini kontrol et
emailChecker($_POST[email]);
// if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $mail))
//die ("<center><font size=2 face=verdana color=306090>Gecersiz Eposta Adresi Girdiniz</font></center>");
//sonuc sayisini al ve eyleme basla
if (mysql_num_rows($check_result) < 1) {
//kayit ekle
$sql = "insert into epostakaydi values('', '$_POST[email]')";
$result = mysql_query($sql,$conn) or die(mysql_error());
$display_block = "<p>Kayıt olduğunuz için teşekkürler !</p>";
} else {
//basarisizlik mesajini yazdir
$display_block = "<p>Zaten kayıtlısınız !</p>";
}
} else if (($_POST[op] == "ds") && ($_POST[action] == "unsub")) {
//abone iptaline calisiliyor; e-posta adresinin gecerliliginikontrol et
if ($_POST[email] =="") {
header("Location: emailyonet.php");
exit;
}
//veritabanina baglan
doDB();
//e-posta adresinin listede olup olmadigini kontrol et
emailChecker($_POST[email]);
//sonuc sayisini al ve eyleme gec
if (mysql_num_rows($check_result) < 1) {
//basarisizlik mesajini yazdirin
$display_block = "<p>Couldn't find your adress !</p>
<p>No action was taken.</p>";
} else {
//adresin aboneligini iptal et
$id = mysql_result($check_result, 0, "id");
$sql = "delete from epostakaydi where id = '$id'";
$result = mysql_query($sql,$conn) or die(mysql_error());
$display_block = "<p>You're unsubscribed !</p>";
}
}
?>
<html>
<head>
<title>Kayıt olma/Kayıttan çıkma</title>
</head>
<body>
<h1>Kayıt olma/Kayıttan çıkma</h1>
<?php echo "$display_block"; ?>
</body>
</html>