PHP Captcha (Güvenlik Kodu) Yapımı

16 Ağustos 2013 Cuma












Bu yazıda gercek ip adresini tespit etmeyi öğreneceğiz. Formdan gelen ip'nin gerçek olup olmadığını belirlemek bu sayede mümkün olacaktır.

Kullanacağımız kod dizisi aşağıdaki şekilde:

function ip()
{
 if (getenv('HTTP_CLIENT_IP'))
  $IP = getenv('HTTP_CLIENT_IP');
 elseif (getenv('HTTP_X_FORWARDED_FOR'))
 {
  $IP = getenv('HTTP_X_FORWARDED_FOR');
  if (strstr($IP, ','))
  {
   $TMP = explode (',', $IP);
   $IP = trim($TMP[0]);
  }
 }
 else
  $IP = getenv('REMOTE_ADDR');

 return $IP;
}

PHP'de Şifremi Unuttum Özelliği


















Web sitesinde kullanıcılar şifresini unutunca nasıl talep edecekler, gelin beraber inceleyelim.

PHP aly yapınız olduğunu dikkate alarak aşağıdaki bilgileri incelediğiniz takdirde olayı anlayabileceğinizi düşünüyorum.

Şifre Talep Formu

// şifre talep formu
function sifretalep(){
global $siteadi;  //benim sitemin adı siz isterseniz elle yazabilirsiniz ben global olarak cektim
echo"<div class="kaydol_crv">

<div class="kaydol_crv_ust">
<div class="kaydol_crv_logo"><img src="images/logo.png" width="45" height="45" /></div>
<div class="kaydol_crv_slogan">$siteadi Şifre Talep Formuna Hoşgeldiniz.</div>
<div class="kaydol_crv_cizgi"></div>
</div>
<div class="kaydol_crv_ortagiris">
<form action="sayfa.php?Git=uyehesabi&sayfa=talep" method="POST">
<div class="kaydol_crv_frmkutu">
<div class="kaydol_crv_frmtext">Adınız :</div>
<div class="kaydol_crv_frm"><input class="form" name="yazaradi" type="text" /></div>
</div>
<div class="kaydol_crv_frmkutu">
<div class="kaydol_crv_frmtext">E-postanız :</div>
<div class="kaydol_crv_frm"><input class="form" name="email" type="text" /></div>
</div>
<div class="www.siteadiniz.com"><input class="submit_Kaydol" type="submit" value="?ifre talep"/></div>
</form>
</div>;
}


Talep Edilince Gidilen Fonksiyon

// talep edilince gidilen function

//sifretalepfunction baslangic
function talep(){
global $prefix , $sitemail,$siteadi;
$yazaradi           = kodfilitre($_POST ["yazaradi"]);// kod filtre önceki derslerimden bakabilirsiniz
$email              = kodfilitre($_POST ["email"]);
if (($yazaradi=="") or ($email=="")){ 
  mesajuyari("LÜTFEN BOS ALAN BIRAKMAYIN ",2,"sayfa.php?Git=uyehesabi&sayfa=sifretalep");
}     
else{ 
  $sor=mysql_query("SELECT yazaradi,email FROM ".$prefix."_uyeler WHERE yazaradi='$yazaradi' and email='$email' ");
  if(@mysql_num_rows($sor)>0){
    $ekle=mysql_fetch_array(mysql_query("SELECT * FROM ".$prefix."_uyeler WHERE yazaradi='$yazaradi' or email='$email' "));
    $alici       = $ekle ['email'];
    $sifre       = $ekle ['sifre'];
    $suankisifre1   = md5($sifre);
       if($ekle){
                           $alici      = $email;    
                           $gonderen   = $sitemail;// değişken değil de siz isterseniz (www.siteadiniz.com)şeklinde yazabilirsiniz..
                           $konubilgi  = $siteadi. "ŞIFRENIZ";
                           $bilgi      = "Sayin ".$yazaradi." Sifre talebiniz basariyla gerceklesti.";
                           $bilgi     .= "n YAZAR ADINIZ ".$yazaradi."n";
                           $bilgi     .= "n ŞIFRENIZ ".$sifre ." n";
                           $bilgi     .= "n GİRİŞ IÇIN WEB SİTEMİZİ ZİYARET EDİN. n";
                           $bilgi     .= "n  ".$siteadi ." n";
                           $header     = "From : $alici ";
                           $header     .= "Reply-To : $sitemail ";
                           $emailgonder = @mail($alici,$konubilgi,$bilgi,$header,$gonderen);  
                          if($emailgonder){
                        mesajuyari("ŞİFRE TALEBİNİZ ONAYLANDI. ŞİFRENIZ EMAİLİNİZE GÖNDERİLDİ",2,"index.php");
                            }else{
               mesajuyari("ŞİFRE TALEBİNİZ ONAYLANMADI,BİR SORUNLA KARŞILASTIK, LÜTFEN TEKRAR DENEYİN.",4,"sayfa.php?Git=uyehesabi&sayfa=sifretalep");}

          }else{
          mesajuyari("ŞİFRE TALEBİNİZ ONAYLANMADI, TEKRAR DENEYİNİZ.",4,"sayfa.php?Git=uyehesabi&sayfa=sifretalep");}
   }else{
    mesajuyari("BELİRTTİĞİNİZ DURUMA GÖRE KAYIT BULUNAMADI, HATA OLDUĞUNU DÜŞÜNÜYORSANIZ TEKRAR DENEYİN!",2,"sayfa.php?Git=uyehesabi&sayfa=sifretalep");
    } 
}//yazar adi veya email bos degilse else kapanisi

}//function kapama

//sifretalepfunction bitis

PHP Çok Basit Üyelik Scripti

Merhaba,



Bu derste Php ve Mysql kullanarak çok basit üyelik scripti yazımını görelim. Php ile çok basit bir üyelik scripti yazımı dersidir.

İnşallah faydalı olur.

Gözümden kaçan bir hata varsa konu altından bildirebilirsiniz




ayar.php Dosyası

<?php 
$host= "localhost";
$ad = "root";
$pw ="";
$wt ="denemelerim";

$baglanti = mysql_connect($host,$ad,$pw) or die (mysql_error());
mysql_select_db($wt,$baglanti) or die (mysql_error());

?> 

-----------------------------------------------------------------------
kyt.php Dosyası
<div id="kform">
<p><b>Kullanici Kayit Formu!
<form action="" method="post">
<strong>Kullanici Adi:</strong><br />
<input type="text" name="kadi" /><br />
<strong>Sifre:</strong> <br />
<input type="password" name="sifre" /><br />
<button>Kayit Ol!</button>
</form>
</div>
<?php
include "ayar.php";
$kadi =     @$_POST['kadi'];
$sifre =    @$_POST['sifre'];
$sifre = md5($sifre);
if($_POST){
    if($kadi =="" || $sifre ==""){echo "bos alan birakmayin";}
    else{
    $insert = mysql_query("INSERT INTO uyelik (kadi,sifre) VALUES ('$kadi','$sifre') ");
    if($insert){
        
        echo "<font color=green>Basari Ile Kayit Oldunuz </font>"."<br />";
        echo "<font color=green>Giris yapmak icin <a href='girisyap.php'>tiklayin </font></a>";
        
        

    }else{echo "Uzgunuz Bir Hata Ile Karsilastik !!";} 
 }   
}
?>
<style type="text/css">
#kform{padding:0;margin:0;display:block;background-color:pink; width:300px; height:200px;}
strong{color:black;}
button{margin-top:15px;background-color:black; color:white;width:80px;height:25px; cursor:pointer}
a{text-decoration:none;}
</style>

------------------------------------------------------------
girisyap.php Dosyası

<div id="gform">
<p><b>Kullanici Giris Formu
<form action="" method="post">
<strong>Kullanici Adi:</strong><br />
<input type="text" name="kadi" /><br />
<strong>Sifre:</strong> <br />
<input type="password" name="sifre" /><br />
<button>Giris Yap!</button>
</form>
</div>
<?php
session_start();
include "ayar.php";
$kadi  = mysql_real_escape_string(@$_POST['kadi']);
$sifre  = mysql_real_escape_string(@$_POST['sifre']);
$sifre = md5($sifre);
if($_POST){
    if($sifre=="" || $kadi==""){echo "<font color=red><b>Lutfen Bos Alan Birakmayin</font>";}
    else{
    $sorgula = mysql_query("SELECT * FROM uyelik WHERE kadi='$kadi' and sifre='$sifre'");
    $verisay = mysql_num_rows($sorgula);
    if ($verisay >0){
        $_SESSION['kadi'] = $kadi;
  echo "Basarili Bir Sekilde Giris Yaptiniz"."<br />";
  echo "Profilinize Ulasmak Icin <a href='profil.php'>Tiklayiniz</a>"; 
    }else{
        echo "<font color=red><b>Yanlis kullanici adi veya sifre girdiniz lutfen kontrol ediniz!!</font>";
    }
}
}
?>
<style type="text/css">
#gform{padding:0;margin:0;display:block;background-color:green; width:300px; height:200px;}
strong{color:white;}
button{margin-top:15px;background-color:black; color:white;width:80px;height:25px; cursor:pointer}
a{text-decoration:none;}
p{color:white}
</style>

-----------------------------------------------------
profil.php Dosyası
<?php
session_start();
$kadi =$_SESSION['kadi'];
echo "<div class='basarili'>Hosgeldiniz Sayin <strong>$kadi</strong> </div>"."<br />";
echo "<strong>$kadi</strong> Burasi senin profilin burada profilini duzenleyebilirsin!!";
?>
<style type="text/css">
.basarili{font:15px tahoma;}
strong{color:green;}
</style>

Php ile Thumbnail Oluşturmak


Yazmış olduğum createThumbnail sınıfının videolu anlatımıdır. Bu sınıf sayesinde thumbnaillerinizi hızlı ve kolay bir şekilde oluşturabileceksiniz. 

Thumbnail dışında sadece resim upload işleminide hızlı bir şekilde gerçekleştrmenize olanak sağlayan bu sınıfı deneyin derim :)



Kaynak dosyayı indirmek için tıklayın

PHP ile Dinamik Sitemap (Site Haritası) Yapımı

Bu dersimizde web siteleri için gerekli olan sitemap dosyasını nasıl dinamik bir hale getiririz onu göreceğiz. Dinamikten kasıt bu dosyayı her çalıştırdığımızda kendi içeriğini kendisi oluşturacak bütün olay bu. 

Sitemap google gibi arama motorlarının sitemizi indexlemesi için işe yaraya bir etken olduğundan önem arz etmektedir. Bu dosyayı aracı bir kaç site tarafından oluştura bilirsiniz. Fakat bu çok vakit almaktadır. Dosyayı oluştur ftp adresine at vs..vs.. bu bizin değerli vaktimizi çalmaktadır. Bu dersimizde bu işi pratikleştiriyor olacağız.

Php dosyasını xml verilerini saklayacağından dolayı artık sen xml'sin dememiz gerekiyor zaten bu dersin en önemli yeri de orasıdır. Bu işlemi header ile gerçekleştiriyoruz. Daha sonra yer alan veriler ise bilinen basit veri çekme işleminden bir farkı yoktur.


PHP ile IP Kontrollü Anket Yapımı

Bu dersimizde PHP ve MySQL kullanarak yapılmış anket uygulamasını ele alalım.

Erkan PUR arkadaşımızın yaptığı uygulamanın hataları giderilmiş halini sizlerle paylaşıyorum. 


anket.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ANKETt</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="anketoyla.php">
  <table width="322" border="0" align="left">
    <tr>
      <td colspan="2" align="left">&nbsp;&nbsp;&nbsp;&nbsp;Sitemizi Nasıl Buldunuz?</td>
    </tr>
    <tr>
      <td width="48" align="center"><input type="radio" name="anket" id="radio2" value="5" /></td>
      <td width="264">Güzel</td>
    </tr>
    <tr>
      <td align="center"><input type="radio" name="anket" id="radio3" value="4" /></td>
      <td>İyi</td>
    </tr>
    <tr>
      <td align="center"><input type="radio" name="anket" id="radio4" value="3" /></td>
      <td>İdare Eder</td>
    </tr>
    <tr>
      <td align="center"><input type="radio" name="anket" id="radio" value="2" /></td>
      <td>Devam Et Daha Güzel Olacak :)</td>
    </tr>
    <tr>
      <td align="center"><input type="radio" name="anket" id="radio5" value="1" /></td>
      <td>Kötü</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label for="anket">
        <input type="submit" name="button" id="button" value="Gönder" />
      </label></td>
    </tr>
  </table>
</form>
</body>
</html>



anketoyla.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
  $dbhost  = "localhost";   
$dbkullanici = "root";  
$dbsifre  = "root";
$dbadi = "anket_uygulamasi"; /* kendi veri tabanınızın adı ile değiştirin!*/
$baglan = mysql_connect($dbhost,$dbkullanici,$dbsifre);
mysql_select_db($dbadi,$baglan) or die ("veri tabanına bağlanamıyor");

 @$oy = $_POST['anket'];
 $ip = $_SERVER['REMOTE_ADDR'];
 $sor = mysql_query("select * from anket order by ip DESC LIMIT 0,10");
 while($cek = mysql_fetch_array($sor)){
  $ipp = $cek['ip'];
  }
  
  if($oy==""){
  echo"Lütfen Şıklardan Birini Seçiniz";
  }
  elseif($ip == @$ipp)
  {
   echo"Zaten Oy Kullanmışsınız."; 
  }else{
  $ekle = mysql_query("INSERT INTO anket(oy,ip) VALUES ('$oy','$ip')") or die("Ekleme Hatası");
  echo"Oy Kullandığınız için Teşekkür ederiz<br>
  <a href='anketsonuclar.php'>Sonucları Görmek İçin Tıklayınız...</a>";
  }
 
 ?>
</body>
</html>


anketsonuclar.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php 
$dbhost  = "localhost";   
$dbkullanici = "root";  
$dbsifre  = "root";
$dbadi = "anket_uygulamasi"; /* kendi veri tabanınızın adı ile değiştirin!*/
$baglan = mysql_connect($dbhost,$dbkullanici,$dbsifre);
mysql_select_db($dbadi,$baglan) or die ("veri tabanına bağlanamıyor");


$sor = mysql_query("SELECT * FROM anket");
  while( $cek = mysql_fetch_array($sor)){
  $id = $cek['id'];
  $doy = $cek['oy'];
  }
  $oysayisi = mysql_num_rows($sor);
  
  $sorbes = mysql_query("SELECT * FROM anket where oy=5");{
  $besoy = mysql_num_rows($sorbes);
  $besoyyuzde =round((  ($besoy/ $oysayisi )*100),2);
  }
  $sordort = mysql_query("SELECT * FROM anket where oy=4");{
  $dortoy = mysql_num_rows($sordort);
  $dortoyyuzde = round(( ( $dortoy / $oysayisi )*100),2);
  }
  
  $soruc = mysql_query("SELECT * FROM anket where oy=3");{
  $ucoy = mysql_num_rows($soruc);
  $ucoyyuzde = round(( ( $ucoy /$oysayisi )*100),2);
  }
  
  $soriki = mysql_query("SELECT * FROM anket where oy=2");{
  $ikioy = mysql_num_rows($soriki);
  $ikioyyuzde =round(( ( $ikioy /$oysayisi )*100),2);
  }
  $sorbir = mysql_query("SELECT * FROM anket where oy=1");{
  $biroy = mysql_num_rows($sorbir);
  $biroyyuzde =round(( ($biroy  /$oysayisi )*100),2);
  }
  $toplam =$biroyyuzde + $ikioyyuzde  + $ucoyyuzde + $dortoyyuzde + $besoyyuzde;
  $biroyyuzde1=$biroyyuzde;
  $ikioyyuzde1=$ikioyyuzde;
  $ucoyyuzde1=$ucoyyuzde;
  $dortoyyuzde1=$dortoyyuzde;
  $besoyyuzde1=$besoyyuzde;
  echo"
<table width='642' border='0'>
  <tr>
    <td colspan='5' align='center'>Sonuçlar</td>
  </tr>
    <tr>
    <td colspan='3' align='center'>
    <td width='53'>Oy</td>
    <td width='106'> Yüzde</td>
  </tr>
  <tr>
    <td width='187'>Güzel</td>
    <td width='3' align='center'>:</td>
    <td width='259'><img src='images/formbar_kirmizi.jpg' height='17' width='$besoyyuzde1'></td>
    <td width='53'>$besoy</td>
    <td width='106'>%$besoyyuzde </td>
  </tr>
  <tr>
    <td>İyi</td>
    <td align='center'>:</td>
    <td><img src='images/formbar_sari.jpg'  height='17' width='$dortoyyuzde1' ></td>
    <td>$dortoy</td>
    <td>%$dortoyyuzde </td>
  </tr>
  <tr>
    <td>İdare Eder</td>
    <td align='center'>:</td>
    <td><img src='images/formbar_yesil.jpg'  height='17' width='$ucoyyuzde1'></td>
    <td>$ucoy</td>
    <td>%$ucoyyuzde </td>
  </tr>
  <tr>
    <td>Devam Et Daha Güzel Olacak</td>
    <td align='center'>:</td>
    <td><img src='images/formbar_turuncu.jpg'  height='17' width='$ikioyyuzde1' ></td>
    <td>$ikioy</td>
    <td>%$ikioyyuzde </td>
  </tr>
  <tr>
    <td>Kötü</td>
    <td align='center'>:</td>
    <td><img src='images/formbar_mavi.jpg'  height='17' width='$biroyyuzde1' ></td>
    <td>$biroy</td>
    <td>%$biroyyuzde </td>
  </tr>
  <tr>
    <td colspan='3' align='right'>Toplam Kullanılan Oy Sayısı&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td align='left'> $oysayisi</td>
    <td>%$toplam</td>
  </tr>
</table>"; ?>
</body>
</html>


sql

-- 
-- Tablo yapısı: `anket`
-- 

CREATE TABLE `anket` (
`id` int(11) NOT NULL auto_increment,
`oy` varchar(50) collate utf8_turkish_ci NOT NULL,
`ip` varchar(50) collate utf8_turkish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=2 ;

-- 
-- Tablo döküm verisi `anket`
--