php etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Haziran 2018 Perşembe

PDO ile Select İşlemi

PDO ile Select İşlemi



PDO ile Select İşlemi (Toplu)

mysql_li ile select işlemini;

$query = mysql_query("SELECT * FROM uyeler");
if ( mysql_affected_rows() ){
while ( $row = mysql_fetch_assoc($query) ){
print $row['username'];
}
}

gibi yapıyorduk. Birde PDO ile Select İşlemine bir bakalım.

PDO kullanarak select işlemi ise;

$query = $db->query("SELECT * FROM uyeler", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
foreach( $query as $row ){
print $row['username'];
}
}

şeklinde yapıyoruz. Şimdi Select İşlemini Tekli olarak yapmaya bakalım.

PDO ile Select İşlemi (Tekli)

mysql_li ile tekli veri çekme işlemi;

$id =1;
$uyesorgu = mysql_query("SELECT * FROM uyeler WHERE id = '{$id}'");
if ( mysql_affected_rows() ){
$row = mysql_fetch_assoc($uyesorgu);
print_r($row);
}

şeklinde olacaktır. Birde PDO ile Tekli Veri Çekme işlemine bakalım.

PDO ile tekli veri çekme işlemi;

$id=1;
$query = $db->query("SELECT * FROM uyeler WHERE id = '{$id}'")->fetch(PDO::FETCH_ASSOC);
if ( $query ){
print_r($urunsorgula);
}

kodunu kullanarak tekli veri çekme işlemimizi başarıyla gerçekleştirmiş oluyoruz.

İyi günler.

20 Haziran 2018 Çarşamba

PDO ile Veritabanı Bağlantısı

PDO ile Veritabanı Bağlantısı



Bildiğiniz üzere PHPnin gelişmiş bir versiyonu olan PDO veritabanı bağlantısı olarakda PHPden biraz farklı bir şekilde kodlanıyor. Bu kodlanış tarzı PHP Veritabanı bağlantısına birazcık benziyor diyebiliriz. PHPnin gelişmiş bir üst versiyonu olan PDO, PHPden daha güvenlikli ve bana göre biraz daha basit bir kodlanış şekli vardır. Önceki makalelerimi okuyarak PDOnun işleyişlerini görebilirsiniz. Fazla lafı uzatmadan PDO ile Veritabanı Bağlantısına geçelim. İlk olarak sizlere PHP ve PDO veritabanı bağlantısını karşılaştırmak amacıyla sizlere ikisinide göstereceğim. 



PHP ile Veritabanı Bağlantısı

$link = mysql_connect('host', 'kullanıcı adı', 'şifre');
if (!$link) {
die('Bağlantı hatası: ' . mysql_error());
}else{
    echo 'Başarıyla Bağlanıldı.';
}

$db_selected = mysql_select_db('veritabanı adı', $link);
if (!$db_selected) {
die ('Veritabanı bağlantısı başarısız: ' . mysql_error());
}else{
    echo 'Veritabanına Başarıyla bağlanıldı.';
}

şeklinde PHP ile Veritabanına bağlantımızı gerçekleştiriyoruz. Bunu PDO ile nasıl yaparız derseniz

PDO ile Veritabanı Bağlantısı

$dsdb = 'mysql:host=sunucu_adresi;dbname=veritabani_adi';
$user = 'kullanici_adi';
$password = 'sifre';

try {
$db = new PDO($dsdb, $user, $password);
} catch ( PDOException $e ){
print $e->getMessage();
}

PDO'da da Veritabanı bağlantısı bu şekilde olacaktır. 

Bu bağlantıyı Veritabanını kullanacağınız tüm scriptlerinizde kullanmanız gerekecektir.

Diğer makalelerimize göz atmak isterseniz Buraya Tıklayınız.

15 Haziran 2018 Cuma

PHP SMTP ile Mail Gönderme İşlemi

PHP SMTP ile Mail Gönderme İşlemi



SMTP ingilizce anlamı Simple Mail Transfer Protocol olan ve Türkçesi ise Elektronik Posta Gönderme Protokolüdür. PHP'nin bir fonksiyonu olan Mail gönderme işlemi genelde Şifremi Unuttum veya Toplu Mesaj gönderme işlemlerinde kullanılıyor. Şahsen ben şifremi unuttum işleminde kullanıyorum. Bu işlemde göndereceğimiz mailin spam klasörüne düşme olasılığıda düşüktür. 



Mail Gönderme İşlemi 

İlk önce size vereceğim dosyaları indiriniz ve onları mail gönderme işlemini gerçekleştireceğiniz yere atın. Dosyalar en aşağıda mevcuttur. Genelde bu mail gönderme işleminde gmail kullanılıyor bende gmail üzerinden göstereceğim. Aşağıdaki kodları istediğiniz bir php dosyasına yapıştırın. Daha sonra kendinize göre düzenleyiniz. 

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->Username = 'burayakendimailadresigirilecek@gmail.com';
$mail->Password = 'şifrenizigirin';
$mail->SetFrom($mail->Username, 'Kendi Adınız);
$mail->AddAddress('alıcınınadresi@mail.com', 'Gönderdiğiniz kişinin adı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'Mail Başlığı';
$mail->MsgHTML('Mailin içeriği!');
if($mail->Send()) {
echo 'Başarıyla gönderildi.';
} else {
echo 'HATA! ' . $mail->ErrorInfo;
}

Bu işlemde örnek veremiyorum çünkü elimdeki tüm gmail hesapları üst düzey güvenlik olduğundan dolayı giriş yapmasını ve mesaj göndermesini engelliyor. Siz kendi hesabınızı eklerseniz hiçbir sorun olmayacaktır. Olursa eğer yorumlar kısmında belirtiniz. İşlemimiz bukadardır arkadaşlar herhangi bir sorunuz olursa yorumlar kısmında belirtebilirsiniz. Mail gönderme işlemini şifremi unuttum kısmına entegre edebilirsiniz. Mail içeriği kısmına link yapısını girebilirsiniz. Örnek;

$mail->MsgHTML($url);

şeklinde olacaktır. Bir önceki yazımı okursanız ne dediğimi daha iyi anlayacaksınız.

Kullanılan Dosya : Tıkla


İyi günler.


PDO ile Şifremi Unuttum Yapımı


PDO ile Şifremi Unuttum Yapımı


Genellikle tüm scriptlerde kodlanması gereken bir diğer özellik ise Şifremi Unuttum özelliğidir. Bu özellik olmadan üyeler şifrelerini unuttuğunda ne yapacaklarını bilemezler ve kendilerine yeniden bir hesap kurmak isterler. Buda bir zaman kaybı oluyor. Şifremi unuttum özelliği ile artık üyeleriniz şifrelerini unuttuğunda veya hesabını çaldırdığında şifremi unuttum özelliği ile tekrardan şifresine ulaşabilecektir. Şimdi hiç zaman kaybetmeden işlemimize geçelim.



İlk olarak Veritabanımızda kullandığım tablolar aşağıdaki gibidir kendinize göre düzenleyebilirsiniz. Şifremi unuttum işlemi Token ile çalışacaktır onuda düzenleyebilirsiniz.

Veritabanımız bu şekilde olacaktır. Birsonraki işlemimiz şifremi unuttum sayfası olucaktır. 
forgotPassword.php adında bir dosya oluşturalım ve içine;

<?php
try {
$connection = new PDO("mysql:host=localhost;dbname=dersler;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}
    if (isset($_POST["forgotPass"])) {
        $email = $_POST["email"];
        $data = $connection->query("SELECT id FROM users WHERE email='$email'");
        if ($data->rowCount() > 0) {
            $str = "0123456789qwertzuioplkjhgfdsayxcvbnm";
            $str = str_shuffle($str);
            $str = substr($str, 0, 10);
            $url = "http://localhost/members/resetPassword.php?token=$str&email=$email";
            //mail($email, "Şifre Yenileme", "Yeni şifre için, lütfen tıklayınız : $url", "From: sefayilmaz@visualdersleri.blogspot.com\r\n");
            $connection->query("UPDATE users SET token='$str' WHERE email='$email'");
            echo "Email adresinizi kontrol ediniz.!";
        } else {
            echo "Böyle bir mail adresi bulunamıyor.!";
        }
    }
?>
<html>
    <body>
        <form action="forgotPassword.php" method="post">
            <input type="text" name="email" placeholder="Email"><br>
            <input type="submit" name="forgotPass" value="Request Password">
        </form>
    </body>
</html>

yazalım ve kayıt edip çıkalım. Yukarıda biz tokeni rasgele oluşturduk daha sonrada bu tokeni veritabanına işledik. Ardından bir link yapısı oluşturduk ve bu link yapısını ise üye'ye mail olarak gönderdik ama biz yukarıda mail gönderme işlemini yapmadım onun için kaynak bir kod paylaşacağım aslında kolay birşey gmail'im aşırı güvenlikli olduğu için mail sistemine giriş yapamadığım için yukarıda belirtmedim ama ileriki zamanda mail gönderme işlemini paylaşacağım.

Sıradaki işlemimiz ise şifre yenileme işlemi. Şifre yenileme işlemimiz otomatik olarak rasgele bir şifre belirleniyor daha sonrada bu şifreyi üye'ye verilerek veritabanımıza kayıt oluyor. 

resetPassword.php adında bir dosya oluşturarak aşağıdaki kodları yapıştıralım.

<?php
try {
$connection = new PDO("mysql:host=localhost;dbname=dersler;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}
    if (isset($_GET["token"]) && isset($_GET["email"])) {
        $email = $_GET["email"];
        $token = $_GET["token"];
        $data = $connection->query("SELECT id FROM users WHERE email='$email' AND token='$token'");
        if ($data->rowCount() > 0) {
            $str = "0123456789qwertzuioplkjhgfdsayxcvbnm";
            $str = str_shuffle($str);
            $str = substr($str, 0, 15);
            $password = md5($str);
            $connection->query("UPDATE users SET password = '$password', token = '' WHERE email='$email'");
            echo "Yeni şifren: $str";
        } else {
            echo "Lütfen link yapınızı kontrol ediniz!";
        }
    } else {
        header("Location: login.php");
        exit();
    }
?>

ve işlemimiz burda bitiyor. Mantığını anlarsanız her şey basit olacaktır. Verileri kendinize göre düzenleyebilirsiniz. Dediğim gibi mail sistemini bir sonraki makalemde bahsedeceğim sizde onu şifremi unuttum sistemine entegre edebilirsiniz. 

İyi günler.

8 Haziran 2018 Cuma

PDO Fonksiyon Kullanarak Giriş Sistemi Yapma

PDO Fonksiyon Kullanarak Giriş Sistemi Yapma

PDO ile Giriş sistemi aslında oldukça basit bir işlem. Sadece 50-60 satır kod yazarak giriş sistemi yapabilirsiniz. Ancak bugün göstereceğim işlemle birlikte bu 50-60 satır kodu en az seviyeye çekmeye çalıştım. Bugün Fonksiyon kullanarak nasıl Giriş Sistemi yapılır ondan bahsedicem.

İşlemimize geçmeden önce kullanmış olduğum veritabanı bilgilerini size paylaşıyım siz kendiniz ona göre düzeltirsiniz.

CREATE TABLE `users` (
`user_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`username` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 250 ) NOT NULL
) ENGINE = MYISAM ;

Bunları siz kendi üye tablonuza göre düzenlersiniz. Şimdi ise fonksiyon kodlarımıza bi bakalım.

class DemoLib
{
public function Login($username, $password)
{
try {
$db = DB();
$query = $db->prepare("SELECT user_id FROM users WHERE (username=:username OR email=:username) AND password=:password");
$query->bindParam("username", $username, PDO::PARAM_STR);
$enc_password = hash('sha256', $password);
$query->bindParam("password", $enc_password, PDO::PARAM_STR);
$query->execute();
if ($query->rowCount() > 0) {
$result = $query->fetch(PDO::FETCH_OBJ);
return $result->user_id;
} else {
return false;
}
} catch (PDOException $e) {
exit($e->getMessage());
}
}
}

Fonksiyon kodlarımız bunlardır. Şifremizi sha256 ile şifrelemiş bulunmaktayız siz kendiniz isterseniz bir önceki yazıma bakarak şifreleme yöntemini kendinize göre düzenlersiniz. 

Bu işlemi yaptıktan sonra unutmamamız gereken bir işlem daha var ve oda Veritabanı Bağlantımız.
Hemen o işlemide halledelim.

define('HOST', 'localhost');
define('USER', 'root');
define('PASSWORD', 'root');
define('DATABASE', 'dersler');
function DB()
{
try {
$db = new PDO('mysql:host='.HOST.';dbname='.DATABASE.'', USER, PASSWORD);
return $db;
} catch (PDOException $e) {
return "Error!: " . $e->getMessage();
die();
}
}

Benim klasik kullandığım Config sistemi sizede tavsiye ederim.

Bir sonraki işlemimiz ve son işlemimiz olan Giriş sayfamız. Giriş sayfamızın HTML kodları;

<div class="row">
<div class="col-md-5 well">
<h4>Function ile Giriş Sistemi</h4>
<?php
if ($login_error_message != "") {
echo '<div class="alert alert-danger"><strong>Error: </strong> ' . $login_error_message . '</div>';
}
echo $login_success_message;
?>
<form action="index.php" method="post">
<div class="form-group">
<label for="">Kullanıcı Adı</label><br>
<input type="text" name="username" class="form-control"/>
</div>
<div class="form-group">
<label for="">Şifre</label><br>
<input type="password" name="password" class="form-control"/>
</div>
<div class="form-group"><br>
<input type="submit" name="btnLogin" class="btn btn-primary" value="Giriş Yap"/>
</div>
</form>
</div>
</div>

Bu şekilde olucaktır. PHP kodlarımızı html kodlarımızın hemen üstünde olucak şekilde yapıştırın. PHP kodlarımız ise;

include "config.php";
include "functions.php";

session_start();

$app = new DemoLib();

$login_error_message = '';
$register_error_message = '';
$login_success_message = '';
// check Login request
if (!empty($_POST['btnLogin'])) {

$username = trim($_POST['username']);
$password = trim($_POST['password']);

if ($username == "") {
$login_error_message = 'Kullanıcı adını boş bırakmayın.';
} else if ($password == "") {
$login_error_message = 'Şifreyi boş bırakmayın.';
} else {
$user_id = $app->Login($username, $password);
if($user_id > 0)
{
$_SESSION['user_id'] = $user_id;
$login_success_message = 'Başarılı';
}
else
{
$login_error_message = 'HATA!';
}
}
}
Şeklinde olacaktır. 

İşlemimiz bukadardır arkadaşlar anlamadığınız yer olursa yorumlar kısmında belirtirseniz elimden geldiğince yardımcı olmaya çalışacağım. Kendinize iyi bakın. 

İyi Günler.

5 Haziran 2018 Salı

PDO ile Password Şifreleme Yöntemleri

PDO ile Password Şifreleme Yöntemleri


Üyelerinizin bilgilerini gizlemek sitenizin güvenliğini bir adım daha üst seviyeye çıkartıcaktır. Bunun yoluda ilk olarak üyelerinizin bilgilerini gizlemekten gelir. Üyelerin bilgilerini şifrelemek siteye zarar verebilecek birisinin sizin üyelerinizin bilgilerini ele geçirememesi ve üyelerinize zarar verememesi için bu güvenlik her siteye şart. 



Bazı şifreleme yöntemleri aşağıdaki gibidir;

MD5 Şifreleme;
Şifrelenmemiş Hali = admin 
Şifrelenmiş Hali = 21232f297a57a5a743894a0e4a801fc3
Şifreleme Kodu = echo = md5("admin");

SHA1 Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = d033e22ae348aeb5660fc2140aec35850c4da997
Şifreleme Kodu = echo = sha1("admin");

MD5 (SHA1) Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = 0c7540eb7e65b553ec1ba6b20de79608
Şifreleme Kodu = echo = md5(sha1("admin"));

SHA1 (MD5) Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = 90b9aa7e25f80cf4f64e990b78a9fc5ebd6cecad
Şifreleme Kodu = echo = sha1(md5("admin"));

Bunlar klasik yani birkaç scriptde MD5 kullanılır ancak benim göstereceğim bazı scriptlerde vardır ama şifrelenen şifrenin çözülmesi zor olucaktır. Zaman kaybetmeden şifreleme yöntemine geçelim.

Şifreleme yöntemimiz PHP 7. sürümünde denenmiştir ve çalışmaktadır.

$password = "admin";
$hash = password_hash($password, PASSWORD_BCRYPT);
echo $hash;

Ekran çıktısı;

$2y$10$56wnCkPbiLHPtigywQWRpOS4Ip3mTz.DpEi29I8ApWFIjGT6e0o9i

olucaktır. Şifreleme yöntemimiz basittir siz bunu üye kayıt sırasında üyenin şifresini veritabanına kayıt ettirirken bu şifreleme yöntemini kullanarak üyenin şifresini yukarıdaki gibi gizlemiş olursunuz ve bu gizlenmiş şifre çözülemez. 

İyi günler.

22 Mayıs 2018 Salı

PHP | PDO ile Veritabanından Veri Silme

PHP | PDO ile Veritabanından Veri Silme



PDO ile veritabanımızdan nasıl veri silinir ondan bahsedicem.

Veritabanımızdan veri silmeyi phpmyadmin'e girerekde silebiliriz ancak bunu tek bir tuşla ve hiç yorulmadan istediğimiz veriyi silme işlemini gerçekleştireceğiz.

Bu makalemde Admin panelinden üye silme işlemini baz alarak kodlarımı ona göre hazırlayacağım.


İlk olarak bir config bağlantısı gerçekleştirelim. Bağlantı kodlarımız aşağıdaki gibidir.

try {
$db = new PDO("mysql:host=localhost;dbname=makale;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}

Admin panelimize geçelim ve üyelerimizi panelimize çekelim ve daha sonrada silme işlemine geçelim. Panelimize üyelerimizi çekmekle başlayalım daha sonrada üye silme işlemine geçelim.

Veri çekme işlemini blogumda paylaşmıştım biraz bakarsanız bulabilirsiniz.

$query = $db->query("SELECT * FROM uyeler order by uye_id desc", PDO::FETCH_ASSOC);
foreach($query as $row){
if ($row["uye_rank"] == 1){
$row["uye_rank"] = "Üye";
}else if($row["uye_rank"] == 2){
$row["uye_rank"] = "Yazar";
}else if($row["uye_rank"] == 3){
$row["uye_rank"] = "Banlı";
}
if($row["uye_onay"] == 1){
$row["uye_onay"] = "Onaylı";
}else if($row["uye_onay"] == 0){
$row["uye_onay"] = "Onaysız";
}
echo "<tr><td>".$row["uye_id"]."</td>
<td>".$row["uye_username"]."</td>
<td>".$row["uye_eposta"]."</td>
<td>".$row["uye_numara"]."</td>
<td>".$row["uye_adsoyad"]."</td>
<td>".$row["uye_rank"]."</td>
<td>".$row["uye_onay"]."</td><td>
<a href='uyeduzenleme.php?id=".$row["uye_id"]."'><button class='btn btn-primary btn-xs'><i class='fa fa-pencil'></i></button></a>";
?>
<a onclick="return confirm('Üyeyi Silmek İstediğinize Eminmisiniz?');" href="uyesilme.php?id=<?php echo $row["uye_id"]; ?>">
<?php echo '<button class="btn btn-danger btn-xs"><i class="fa fa-trash-o "></i></button>
</a></td></tr>';
}

Tablo halinde bu kodlar ile üyelerimi panelime listelettirdim siz kendinize göre düzenleyerek yapabilirsiniz. Sayfadaki görüntüsü;

Şimdi silme işlemine geçelim. Silme işleminde biz üst tarafta üye silme butonunu uyesilme.php?id=(üyeid) olarak belirtmişiz. Yani silme işlemimiz uyesilme.php dosyamızda olacaktır.
Uyesilme.php dosyamıza yazacağımız kodlar ise aşağıdaki gibidir.

include "../config/config.php";
session_start();
ob_start();
if (isset($_SESSION["adminusername"])){
$id = $_GET["id"];
$sorgu = $db->prepare("SELECT * FROM uyeler Where uye_id=:id");
$sorgu->execute(array(
"id" => $id
));
$islem2 = $sorgu->fetch(PDO::FETCH_ASSOC);
if($islem2 < 1){
header("location:index.php");
}
$silme = $db->prepare("DELETE FROM uyeler where uye_id = ?");
$sil = $silme->execute(array($id));
$delete = $silme->rowCount();

if($delete){
if($sil){
echo '<div class="alert alert-success" role="alert">
<strong>Üye Silindi!</strong> Şimdi Üye Düzenleme sayfasına yönlendiriliyorsunuz
</div>';
header("refresh:2;url=uye-duzenle.php");
}
}else{
echo '<div class="alert alert-danger" role="alert">
<strong>Üye Silinemedi!</strong> Bilinmeyen bir hata oluştu. Üye düzenleme sayfasına yönlendiriliyorsunuz.
</div>';
header("refresh:2;url=uye-duzenle.php");
}
}else{
header("location:index.php");
}

İlk önce config dosyamızı çağırdık daha sonra id değerini aldık. ardından böyle bir id'li üye varmı diye bir sorgu yaptık eğer yok ise bizi anasayfaya yönlendirecek varsada işlemimize devam ettirecek.
Daha sonra ise 

$silme = $db->prepare("DELETE FROM uyeler where uye_id = ?");
$sil = $silme->execute(array($id));
$delete = $silme->rowCount();

kodumuz ile silme işlemimizi başlatmış oluyoruz. Çıktımız ise;

şeklinde olacaktır.

Kısaca anlatmaya çalıştım umarım anlamışsınızdır. Yakında videolu anlatımlara geçeceğim orda daha detaylı bir şekilde anlatmaya çalışacağım. Bir sonraki dersimizde görüşmek üzere. 

İyi günler.

28 Nisan 2018 Cumartesi

PHP ile Fonksiyon Kullanmadan Array'daki Maksimum Sayıyı Bulma

PHP ile Fonksiyon Kullanmadan Array'daki Maksimum Sayıyı Bulma




PHP ile herhangi bir fonksiyon kullanmadan Array'dan en yüksek sayıyı bulma nasıl yapılır
onu göstereceğim.

Bu işlem bizim nerede işimize yarıyacak derseniz array ile çektiğiniz verileri sayısal olarak büyükten küçüğe sıralatmak istediğinizde bu işlemi kullanarak yapabilirsiniz.




Şimdi kodlarımıza geçelim. 

$array = array(1,2,3,4,5,6,7,8,9);

$sayi = 0;

foreach($array as $row){
$sayi = $sayi+1;
}

$maxsayi = $array[0];
for($i=1;$i<$sayi;$i++){
if($array[$i] > $maxsayi){
$maxsayi = $array[$i];
}
}

echo 'Maksimum Sayı '.$maxsayi;

Kodumuzun çıktısı ise;

arraydaki en büyük sayımızı bize yazdırdı. İşlemimiz bukadardı siz bunu geliştirebilirsiniz basit bir işlem.

İyi günler.

24 Nisan 2018 Salı

PHP Döngüler (While, For, Foreach, Do...While)

PHP Döngüler (While, For, Foreach, Do...While)





Döngüler sayesinde bir kodu istediğimiz kadar ard arda yazdırabiliriz. PHP'de 4 adet döngü bulunmaktadır. Bunların işlevleri neredeyse birbirlerine benzer durumdadır. Teknik olarak aynı işlevleri yapıyorlar ancak kullanım yerleri farklıdır. Biz bunlardan en çok While ve For döngüsünü kullanıyoruz. 



Döngüler PHP'de en işe yarar ifadelerden birisidir. Sonsuz döngüye girme gibi bir riski vardır ancak PHP'de biz bunu durdurabiliriz yani sonsuz döngüye girmesini belli bir yerden sonra durmasını isteyebiliriz. Örnekleri gördükce daha çok anlayacaksınızdır.

Şimdi döngülerimizi tek tek inceleyelim. İlk olarak While döngüsüne bir bakalım.

While

While döngüsü if komutuyla benzer durumda yani if'de de koşul belirtiyoruz burdada koşul belirtiyoruz. Tek farklı yönü döngü olduğu için koşul doğru girildiği sürece koşul yerine getirilene kadar tekrarlar. 

while( koşul ) {
// Koşul olumlu olduğu sürece çalışacak kod kısmı.
}

While döngümüzde sonsoz döngüye girmek aslında çok basit ancak bilgisayarınız düşük bir işletim sistemine sahip ise bunu tavsiye etmem. Eskiden kodu denemek için çalıştırmıştım zar zor kapatabilmiştim. Tavsiye etmem sonsuz döngüyü.

$sayi = 5;
while($sayi == 5) {
echo 'sayi değişkeni 5 olduğu sürece bu yazı hep sayfanızda yazılacaktır. Kısaca sonsuz döngü.';
}

Üstteki kodda While sonsuz döngüye girmiştir. Koşulumuza $sayi 5e eşit olduğu sürece echo ile yazımızı sonsuza kadar yazdır dedik. Bunu belli bir yerde nasıl durdurabiliriz şimdi ona bakalım.

$sayi = 0;
while($sayi < 19) {
echo ' VisualDersleri.blogspot.com - Döngü ' . $sayi.'<br>';
$sayi++;
}

Bu kodumuzda ise While'de koşul kısmına $sayi 19'dan küçük olduğu sürece çalıştır dedik ve $sayi++ yazdık yani sayı 18'e gelene kadar 1 defa arttır demiş olduk. Çıktısı;


sayımızı 0 olarak belirttik ve 19'dan küçük olana kadar çalıştır dedik ve bunu yaparken de sayıyı 1 defa arttır demiş olduk. Neden 19 yazılmadı derseniz şimdi şöyle düşünün sayı 19 olarak varsayalım ve 19 < 19 diye birşey olmuyor dimi mantıken olmaz ama biz 19u da yazdıralım diyorsanızda yine sayımızı 19 olarak belirterek 19 <= 19 yazarsanız sayfanıza 19'u da yazdıracaktır.

Bir sonraki döngümüz ise For döngüsü.

For


For döngüsünde belirlediğimiz sayıda dönecek olan kodların kullanımında kullanışlıdır. For döngüsüned 3 parametre vardır bunlar; Birinci parametremizde döngümüzde kullanılacak olan değişkeni belirleme ve değerini tanımlamadır. İkinci parametremiz ise While'de olduğu gibi bir koşul belirtme. Üçüncü parametremiz ise her döngüde yapacağı işlemi belirtmedir. Örnek üzerinde daha kolay anlayacaksınızdır.

for($sayi = 0; $sayi < 19; $sayi++) {
echo ' Visualdersleri.blogspot.com - Döngü ' . $sayi.'<br>';
}

Bundada While'de gördüğünüz gibi aynı sonuç çıkacaktır. Sayımızı 0 olarak belirttik yine ve bu sayı 19dan küçük olana kadar 1 defa arttır dedik ve bize 18e kadar yazdırmış oldu. Ekran çıktısı;



Bir sonraki döngümüz ise foreach. Foreach ile ilgili blogumda bir yazı mevcuttur. Aşağıdaki link'den Foreach döngümüzü bulabilirsiniz.

Foreach Konumuzda Gitmek İçin Tıklayın

Foreachı atlayarak son döngümüz olan Do...While döngümüze geçiyoruz.

Do...While


Bu döngü diğerleri kadar pek fazla kullanılmaz ama yinede bilmekta fayda vardır fazla bilgi göz çıkarmaz. Do While döngüsü While döngüsünün koşul olayı aynı tek farkı ise koşul geçerli olsun olmasın ama en az 1 defa çalıştır. Yani 1 defa çalıştırdıktan sonra 2. döngüde çalıştırmadan önce koşulu kontrol eder ve ona göre çalıştırır.

do
{
// 1 kez çalışıp sonradan koşul ile dönecek olan kod yeri
}
while ( koşul );

Örnek vericek olursak;

$sayi = 29;
do
{
echo 'Visualdersleri.blogspot.com Do While Döngüsü';
}
while ( $sayi < 19 );

Çıktısı olarakda sadece ekranda Visualdersleri.blogspot.com Do While Döngüsü yazıcaktır.

Dersimiz buraya kadardır kendinize iyi bakın bir sonraki dersde görüşmek üzre. 

İyi günler.

18 Nisan 2018 Çarşamba

PHP | PDO ile Konu Görüntüleme (Hit Belirleme)

PHP | PDO ile Konu Görüntüleme (Hit Belirleme)




Bildiğiniz üzre neredeyse tüm blog, film, dizi scriptlerinde olmazsa olmazlarımızdan olan konunun ne kadar görüntüleme aldığını belirtmek hem sitenin aktifliğini hemde o bölümün ne kadar popüler olduğunu görmüş oluruz.

Bu yazımda ise PDO ile konuya ne kadar girildiğini veritabanına kayıt ettiricez ve bunu konu içeriğinde göstericez. 


İlk olarak veritabanımıza bir bağlantı yapalım. Herzaman olduğu gibi bu yazımda da Film scriptini baz alarak kodlarımı ona göre yapacağım siz ne yapıyorsanız ona göre düzeltebilirsiniz.

config.php adında bir dosya oluşturarak aşağıdaki kodlarımızı içine yazalım.

try {
$db = new PDO("mysql:host=localhost;dbname=filmscript;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}

Film tablomuza film_hit adında bir tablo ekleyelim.

Film içeriğini ben film.php adında bir dosya'ya çekiyorum siz konunuzu nereye çekiyorsanız oraya girin.

Config dosyanızı çağırdığınız yerin hemen altına;

$id = 1; // Film id'yi 1 olarak varsayıyoruz siz $id'yi GET ile çektiğiniz için 1 yerine GET kodunuzu yazabilirsiniz.
$hit = $db->prepare("UPDATE film SET film_hit= film_hit +1 WHERE film_id=?");
$hit->execute(array($id));

kodunu yazarak film içeriğine girerek her girişinde film_hit 1 artıcak şeklinde olucaktır. Film_hit ne kadar ise onun üstüne 1 ekliyor. Bu mantık ile her F5 yapıldığında filmin hit'i 1 artıcaktır. Bunu engellemek ip ile olabilir üye 5 defa arka arkaya F5 yaptığında anasayfaya yönlendirme yapabilirsiniz.

Daha sonra film içeriğimizde film hitimizi belirtmek için yazacağımız kod ise;

$sorgu = $db->prepare("SELECT * FROM film Where film_id=:id");
$sorgu->execute(array(
"id" => $id
));
$islem = $sorgu->fetch(PDO::FETCH_ASSOC);
echo $islem["film_hit"];

yazarak film hitimizi film içeriğimizde belirtmiş oluyoruz.

Sorularınız, hatalar ve yapamadığınız işlemler için aşağıdaki linklerden ulaşabilirsiniz. Eğer ulaşamazsanız aşağıdaki yorumlar kısmında belirtirseniz yardımcı olacağım.

İyi günler.

b2b yazılım vois media