üyelik formu kod istek

merhaba arkadaşlar siteme ekleyebileceğim ufak bir üyelik lazım.
ad soyad, email, şifre istenmesi yeterli.
veritabanım hazır, var olan ayar dosyama göre kodu yazmayı beceremedim yardımcı olma imkanınız varsa minnetar kalırım.

ayar.php,

$dbhost = "localhost";
$dbuser = "test";
$dbpass = "test";
$dbname = "test"; 

 

Merhaba.
Tam olarak nasıl bir şey istiyorsunuz?
Veritabanı üyeler tablosunun görüntüsünü paylaşır mısın?

merhaba kardeş,

üye olan kişilere ait email daha önce kayıtlımı değil mi kontrol etsin varsa uyarı versin yoksa kaydedildi uyarısı versin.

birde benim kullanıcı adı ve şifre kötü kod için kontrol eden cleanup adında bir fonksiyonum var eklenirse iyi olur.

veritabanı görüntüsü ekte, teşekkürler.

Merhaba.
İstediğiniz şekilde bir üyelik formu yapmaya çalıştım.
Üyenin var olup olmadığını hem kullanıcı adıyla hem email ile kontrol ettirdim. 

ayar.php

<?php

	header("Content-Type: text/html; charset=utf-8");

	### Bağlantı Değişkenleri ###
	$host 	= "localhost"; 	// host adı
	$user 	= "root"; 		// veritabanı kullanıcı adı
	$pass 	= ""; 			// veritabanı şifre
	$db 	= ""; 		    // veritabanı adı

	### MySql Bağlantısı ###
	$baglan = @mysql_connect($host , $user , $pass) or die("MySql Bağlantısı Sağlanamadı!<br>".mysql_error());

	### Veritabanı Bağlantısı ###
	$sec = @mysql_select_db($db , $baglan) or die("Veritabanı Bağlantısı Sağlanamadı!<br>".mysql_error());

	### Karakter Seti Ayarları ###
	mysql_query("SET NAMES 'utf8'");
	mysql_query("SET CHARACTER SET 'utf8'");
	mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");

?>


index.php

<?php

require("ayar.php");

if( $_POST ){
	
	$uye_kullanici_adi = @mysql_real_escape_string(strip_tags(trim($_POST["uye_kullanici_adi"])));
	$uye_sifre = @md5(mysql_real_escape_string(strip_tags(trim($_POST["uye_sifre"]))));
	$uye_ad = @mysql_real_escape_string(strip_tags(trim($_POST["uye_ad"])));
	$uye_soyad = @mysql_real_escape_string(strip_tags(trim($_POST["uye_soyad"])));
	
	$uye_eposta = @mysql_real_escape_string(strip_tags(trim($_POST["uye_eposta"])));
	$uye_eposta_kontrol = filter_var($uye_eposta, FILTER_VALIDATE_EMAIL);
	
	$uyeVarmi = @mysql_num_rows( mysql_query("SELECT id, username, email FROM uyeler WHERE username='$uye_kullanici_adi' OR email='$uye_eposta' ") );
	
	$onaylimi = 0;
	
	if( empty($uye_kullanici_adi) || empty($uye_sifre) || empty($uye_eposta) || empty($uye_ad) || empty($uye_soyad) ){
		echo "Lütfen tüm alanları doldurunuz!";
		header("Refresh:2; url=index.php");
	}elseif(!$uye_eposta_kontrol){
		echo "Lütfen geçerli bir e-posta adresi giriniz!";
		header("Refresh:2; url=index.php");
	}elseif($uyeVarmi > 0){
		echo "Böyle bir kullanıcı sitede kayıtlı. Lütfen başka bir kullanıcı adı ya da eposta seçin.";
		header("Refresh:3; url=index.php");
	}else{
		
		$uyeKayit = @mysql_query("INSERT INTO uyeler SET
									username = '$uye_kullanici_adi',
									password = '$uye_sifre',
									ad		 = '$uye_ad',
									soyad	 = '$uye_soyad',
									email	 = '$uye_eposta',
									onaylimi = '$onaylimi'
								");
		
		if($uyeKayit){
			echo "Tebrikler! Başarıyla üyelik kaydınız yapılmıştır";
			header("Refresh:2; url=index.php");
		}else{
			echo "Hata! Üyelik kaydınız yapılamadı!";
			header("Refresh:2; url=index.php");
		}
		
	}
	
}else{ ?>
	
	<form action="" method="post">
		Kullanıcı Adı<br>
		<input type="text" name="uye_kullanici_adi" value=""><br><br>
		Şifre<br>
		<input type="password" name="uye_sifre" value=""><br><br>
		E-posta<br>
		<input type="text" name="uye_eposta" value=""><br><br>
		Ad<br>
		<input type="text" name="uye_ad" value=""><br><br>
		Soyad<br>
		<input type="text" name="uye_soyad" value=""><br><br>
		<input type="submit" name="kaydet" value="Üyeliğimi Tamamla">
	</form>
	
<?php } ?>


Bahsetmiş olduğunuz fonksiyonun nasıl bir yapıda olduğunu bilmiyorum o yüzden eklemedim. Ama siz yapmak istiyorsanız aşağıdaki gibi yapabilirsiniz.

<?php
   $uye_kullanici_adi = cleanup( $_POST["uye_kullanici_adi"] );
   $uye_sifre         = md5(cleanup( $_POST["uye_sifre"] ));
?>

 

Kusura kalma kardeş işçilik işte yoğundum nete giremedim :)

tşk cevap için, yazdığın kod nedense benim ayarlarımla uyuşmuyor bağlantı hatası veriyor.

ben bişeyler yaptım aktivasyon maili falanda yolluyor sadece güvenlik kodunu eklemeyi beceremedim.

security image, dosyaları ekliyorum güvenlik kodunda yardımcı olursan memnun olurum.

uye_ol.php

<?php
if( isset($_POST["kayit_onay"]) && $_POST["kayit_onay"] == "2" ) {
	// strip_tags(html kaldır), trim(boşluk kaldır), dbtrim(tırnak sorunu)
	$ad = strip_tags(trim(dbtrim($_POST["ad"])));
	$soyad = strip_tags(trim(dbtrim($_POST["soyad"])));
	$username = strip_tags(trim(dbtrim($_POST["username"])));
	$password = strip_tags(trim(dbtrim($_POST["password"])));
	$passwordc = strip_tags(trim(dbtrim($_POST["passwordc"])));
	$email = strip_tags(trim(dbtrim($_POST["email"])));
	$secure_code = strip_tags(trim(dbtrim($_POST["secure_code"])));
								
				$img = new Securimage();
				$security = $img->check($secure_code);

	if( strlen($ad) < 3 || strlen($ad) > 15 ) {
		echo "Adınız en az 3 en çok 15 karakter olmalıdır!";
	} else if( strlen($soyad) < 2 || strlen($soyad) > 21 ) {
		echo "Soyadınız en az 2 en çok 21 karakter olmalıdır!";
	} else if( dbcount("id", "uyeler", "username='".($username)."'") > 0 ) {
		echo "Bu kullanıcı adına sahip üye mevcut!";
	} else if( strlen($username) < 6 || strlen($username) > 20 ) {
		echo "Kullanıcı adınız en az 6 en çok 20 karakter olmalıdır!";
	} else if( strlen($password) < 6  ) {
		echo "Parolanız 6 karakterden az olamaz!";
	} else if( $password != $passwordc ) {
		echo "Parolanızı onaylayamadınız, tekrar deneyin!";
	} else if( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
		echo "Aktivasyon linki göndereceğimiz için, eposta alanına geçerli bir eposta girmelisiniz!";
	} else if( dbcount("id", "uyeler", "email='".($email)."'") > 0 ) {
		echo "Bu email sistemde mevcut!";
	} else if($security !=true){
		echo "Güvenlik kodunu yanlış girdiniz!";
		} else {
		// eşsiz bir kelime, 11 karakterli
		$token = create_token(11);
		// parolayı sistematik olarak şifreyi
		$hash = create_password($password);
		// veritabanına ekle
		$id = dbinsert("uyeler", array(
			"onaylimi" => "0",
			"token" => $token,
			"username" => $username,
			"password" => $hash,
			"email" => $email,
			"ad" => $ad,
			"soyad" => $soyad,
			"secure_code" => $secure_code
		));
		if( idval($id) <= 0 ) {
			echo "Sistemde bir hata oluştu, lütfen tekrar deneyin!";
		} else {
			$passenc = create_password($token);
			$link = "http://domain.com/test/aktivasyon.php?code=".$passenc."&id=".$id;
			HTMLMail($email, "domain.com - No Reply", "no-reply@domain.com", "Aktivasyon linki",
				"Merhaba {$ad} {$soyad}<br /><br />{$username} kullanıcı adlı hesabı aktif etmek için aşağıdaki linke tıklayın lütfen.<br /><br /><a href=\"{$link}\">{$link}</a>"
			);

			echo "Başarıyla kayıt oldunuz, ama hesabınızı <strong>aktif</strong> etmeniz gerekiyor.<br />Belirttiğiniz e-posta adresine aktivasyon linkini gönderdik!";
		}
	}
}
?>
<form action="register.php" method="post">
	<input type="hidden" name="kayit_onay" value="2" />
	
	<table style="padding-left: 10px;" align="center" valign="top" width="100%" >
		<tr>
			<td colspan="2"> <h2>Üye kaydı</h2></td>
		</tr>
		<tr>
			<td><B>Adınız:</B></td>
			<td> <input class="contactinput" type="text" name="ad" id="ad" value="<?=(isset($ad)?$ad:null);?>" /> </td>
		</tr>
		<tr>
			<td><B>Soyadınız:</B></td>
			<td> <input class="contactinput" type="text" name="soyad" id="soyad" value="<?=(isset($soyad)?$soyad:null);?>" /> </td>
		</tr>
		<tr>
			<td><B>Kullanıcı Adı:</B></td>
			<td> <input class="contactinput" type="text" name="username" id="username" value="<?=(isset($username)?$username:null);?>" /> </td>
		</tr>
		<tr>
			<td><B>Şifre:</B></td>
			<td> <input class="contactinput" type="password" name="password" id="password" value="" /> </td>
		</tr>
		<tr>
			<td> <B>Şifre Onay:</B> </td>
			<td> <input class="contactinput" type="password" name="passwordc" id="passwordc" value="" /> </td>
		</tr>
		<tr>
			<td><B>E-posta</B> </td>
			<td> <input class="contactinput" type="text" name="email" id="email" value="<?=(isset($email)?$email:null);?>" />
				<br>Aktivasyon linki gönderilecek, geçerli bir eposta girin!</br>
			</td>
		</tr>
		<tr>
			<td><B>G&#252;venlik Kodu :</B> </td>
			<td>  <img src="securimage_show.php?sid=<?php echo md5(uniqid(time())); ?>" align="absmiddle">
<input name="secure_code" type="text" id="secure_code" size="20" maxlength="7" />
     </td>
		</tr>
		<tr>
			<td colspan="2" style="padding-left: 10px;" align="center" valign="top" width="25%" >
				<input type="submit" value="Kayıt ol" />
			</td>
		</tr>
	</table>
</form>
			</div>

fonksiyon.php

<?php	
   include("config.php");	
/* ===========================================================================
 * - Veritabanı ayarları
 * =========================================================================**/
@ob_start(); @session_start();


// Veritabanı ayarları
$mysql_data = array(
	"host" => "$dbhost",
	"name" => "$dbname",
	"user" => "$dbuser",
	"pass" => "$dbpass",
);
// Kullanılan php versiyonu
$php_version = (int) phpversion();

if( $php_version >= 5 ) {
	$db = @new mysqli($mysql_data["host"], $mysql_data["user"], $mysql_data["pass"], $mysql_data["name"]);

	if( $db->connect_errno ) {
		// eğer bağlantı hatası varsa yazdıralım
		die( $db->connect_error );
	}
} else {
	header("Content-type:text/html;charset=ISO-8859-9");
	// Versiyon PHP5'den geride!
	die("Artık PHP5 kullanıyoruz! Yenilikçi ol, sistemini güncelle :)");
}


$cookie_id = "uyekontrolid";

if( isset($_COOKIE[$cookie_id]) && dbcount("id", "uyeler", "token=".dbexport($_COOKIE[$cookie_id])) ) {
	$giris_yapildimi = 'evet';
	$result = dbquery("SELECT * FROM uyeler WHERE token=".dbexport($_COOKIE[$cookie_id]));
	$uyebilgi = $result->fetch_assoc();
} else {
	$giris_yapildimi = 'hayir';
	$uyebilgi = array();
}



// bu bir ID mi?
function idval($num=0, $greaterthan=0) {
	if(!is_numeric($greaterthan)) $greaterthan = 0;
	return (intval($num) > $greaterthan && is_numeric($num) ? (intval($num)==0?"0":intval($num)) : "0" );
}
function dbtrim($par) {
    return str_replace(array("'","\""), array("&#39;","&quot;"), $par);
}
function dbuntrim($par) {
    return str_replace(array("&#39;","&quot;"), array("'","\""), $par);
}
function dbexport($x='') {return var_export($x, true);}

// query
function dbquery($query) {
	global $db;
	$sorgu = $db->query($query);
	if( !$sorgu || $db->errno > 0 ) {
		die( $db->error );
	} else {
		return $sorgu;
	}
}
function dbinsert($tablo, $datalist) {
	global $db;
    if(is_array($datalist)):
        $alanlar = array_keys($datalist);
        $alan = implode(',', $alanlar); 
        $veri = implode(", ",array_map('dbexport', $datalist));
    else:
        $parametreler = func_get_args();
        $tablo = array_shift($parametreler);
        $alan = $veri = null;
        $toplamParametre = count($parametreler)-1;
        foreach($parametreler as $NO => $parametre):
            $bol = explode('=', $parametre, 2);
            if($toplamParametre == $NO):
                $alan .= $bol[0];
                $veri .= dbexport($bol[1]);
            else:
                $alan .= $bol[0].',';
                $veri .= dbexport($bol[1]);
            endif;
        endforeach;
    endif;

    $sonuc = dbquery('INSERT INTO '.$tablo.' ('.$alan.') VALUES ('.$veri.')');
    if($sonuc)
        return $db->insert_id;
    else
    	return "0";
}
function dbdelete($tablo, $kosul = null) {
    if($kosul):
        if(is_array($kosul)):
            $kosullar = array();
            foreach($kosul as $alan => $veri)
                $kosullar[] = $alan.'='.dbexport($veri);
        endif;
        return dbquery('DELETE FROM '.$tablo.' WHERE '.(is_array($kosul)?implode(' AND ',$kosullar):$kosul));
    else:
        return dbquery('TRUNCATE TABLE '.$tablo);
    endif;
}
function dbupdate($tablo, $deger, $kosul) {
    if(is_array($deger)):
        $degerler = array();
        foreach($deger as $alan => $veri)
            $degerler[] = $alan."=".dbexport($veri);
    endif;
    
    if(is_array($kosul)):
        $kosullar = array();
        foreach($kosul as $alan => $veri)
            $kosullar[] = $alan."=".dbexport($veri);
    endif;
    
    return dbquery('UPDATE '.$tablo.' SET '.(is_array($deger) ? implode(',',$degerler):$deger).' WHERE '.(is_array($kosul)?implode(' AND ',$kosullar):$kosul));
}
// dbcount('id', 'tablo', "id='".idval($id1)."'")
function dbcount($field, $table, $conditions = "") {
	global $db;
	$cond = ($conditions ? " WHERE ".$conditions : "");
	$result = dbquery("SELECT COUNT(".$field.") as t FROM ".$table.$cond);
	if (!$result) {
		die( $db->error );
		return false;
	} else {
		$rows = $result->fetch_array(MYSQLI_NUM);
		return $rows[0];
	}
}
function dbresult($query, $row=0) {
	global $db;
	$result = dbquery($query);
	if (!$result) {
		die( $db->error );
		return false;
	} else {
		$rows = $result->fetch_array(MYSQLI_NUM);
		return $rows[$row];
	}
}
function create_token($length=11) {
    /*for($i=0; $i < $length; $i++) {
        $key .= $keys[array_rand($keys)];
    }
    return $key;*/
    $keys = implode('', array_merge(range('A', 'Z'), range(0,9), range('a', 'z')));
    do {
    	$token = substr(str_shuffle($keys), 0, $length);
    	$say = dbcount( "id", "uyeler", "token='".$token."'" );
    } while( $say > 1 );
    return $token;
}
# password encoder
function create_password($password='') {
	// ($password-length * 5) times
	$times = strlen($password) * 18;
	$pass = $password;
	for( $i=0; $i<=$times; $i++ ) {
		$pass = md5($pass);
	}
	return $pass;
}
/**
 * HTMLMail()
 *
 * Mail fonksiyonu ile HTML mail göndermenizi sağlar
 *
 * @param mixed $gidecekMail
 * @param mixed $gonderenAd
 * @param mixed $gonderenMail
 * @param mixed $konu
 * @param mixed $mesaj
 * @return
 */
function HTMLMail($gidecekMail,$gonderenAd,$gonderenMail,$konu,$mesaj) {
    $headers  = "MIME-Version: 1.0\n";
    $headers .= "Content-type: text/html; charset=UTF-8\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "X-Sender: PHP\n";
    $headers .= "From: $gonderenAd<$gonderenMail>\n";
    $headers .= "Reply-To: $gonderenAd<$gonderenMail>\n";
    $headers .= "Return-Path: $gonderenAd<$gonderenMail>\n";
    return mail($gidecekMail,$konu,$mesaj,$headers);
}
?>

Çözüldü, tamamlanmış kodları ekliyorum belki ihtiyacı olan vardır.

Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git