Etiket arşivi: Php

PHP Rastgele şifre üretme fonksiyonu

PHP web programlamaya yeni başlayanlar arasında bu sorunun yanıtını merak edenler illa vardır sanırım Onlar için PHP ile rastgele şifre üreteceğiz.

Şifre uzunlukları ise sabit değil, fonksiyon içerisinde belirttiğimiz kadar olacak.

Rastgele şifre üretme fonksiyonu
Rastgele şifre üretmeye yarayan fonksiyonumuz alttaki. Çok daha uzunları ve çok daha kısaları yazılabilir. Fakat alttaki işinizi görecekti.

function sifre_uret($uzunluk) {
	$karakterler = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-*_!@#$()+=";
	$karakter_sayi = strlen($karakterler);

	for ($ras = 0; $ras < $uzunluk; $ras++) {
		$rakam_ver = rand(0,$karakter_sayi-1);
		$sifre_ver .= $karakterler[$rakam_ver];
	}
	return $sifre_ver;
}


Nasıl oluyor?
Fonksiyonumuzu çağırırken $uzunluk değişkeni ile şifre  uzunluğunu tanımlıyoruz. $karakterler ile şifre içerisinde yer  alacak karakterleri tanımladık.
 Ve hemen sonrasında toplam karakter  sayısını bulduk. Şifre uzunluğu kadar bir döngü yarattık ardından ve her  seferinde toplam karakter sayısının bir 
altı kadar rakam arasından  rastgele birini seçtik. (bir eksiği kadar çünkü dizi  değişkenler 0 numaradan başlar).. Sonrasında ise tanımlı  karakterlerimizden 
az önce rastgele üretilen rakam sırasında olanı  seçtik.. Hepsi bu kadar :)
 Kullanımısifre_uret(8); 
Şeklindeki kullanım ile 8 karakter uzunluğunda bir şifre elde ederiz.
ÖRNEK
http://www.mehmetmutlu.com.tr/wp-content/uploads/2010/07/rasgele_sifre.php

Mysql Join Uygulaması

Veri tabanı işlemlerinde bir tablodan çalışabileceğimiz gibi birden çok tablolardan veriler çekmemiz ve bu verilere belli kriterler uygulamamız gerekebilir. Uygulamalarımızda her defasında bir veriyi çekip kontorol etmek ve buna istenen kriterleri uygulamak büyük kapsamlı projelerde karmaşıklığa ve kodların yavaş çalışmasına neden olabilir.

Örnek olarak kitap tablomuz ve seçilen kitapların yer aldığı galeri tablomuz olsun. Galeri tablomuzda kitabın id si ne göre işlemler yapacağız.
Kitap tablomuzda: id, isim ve kapak sütunları yer alsın.
Galeri tablomuzda ise, id, kitap_id sutunları yer alsın.

Şimdi seçilen yani galeri tablosunda yer alan verilere göre kitapları vitrin bölümümüzde gösteren kodları yazalım.

SELECT kitap.id as  kid, kitap.isim, kitap.kapak, galeri.id as gid, galeri.kitap_id FROM kitap, galeri WHERE kitap.id=galeri.kitap_id

Yukarıdaki kod satır ; “kitap.id as kid” ile kitap tablosundaki id  sutununu kid olarak aldık,”kitap.isim” ile kitap tablosundaki isim sutununu almış olduk,”kitap.kapak” ile kitap tablosundaki kapak sutunundaki veriyi almış olduk(Kitap kapağının adının tutulmuş olduğu alan). Sıra galeri tablosundaki verileri almaya geldi. “galeri.id as gid” ile galeri tablosundaki id yi gid olarak almış olduk, “galeri.kitap_id” ile galeri tablosundaki kitap idlerinin tutulduğu bölümü çekmiş olduk. Daha sonra “WHERE kitap.id=galeri.kitap_id” ile kitap id si galeri tablosunda kitap_id sutununda yer alan yani galerimize eklenmiş olan verileri(kitapları) getir demiş olduk.
“as” kodu ile değişken tanımlamış oluyoruz.

Bu örnegimizi biraz daha geliştirerek satış içi olan ve galeride yer alan kitapları getirmek isteseydik.Satış içi olarak kitap tablomuzda durum sutununun yer aldığını farz edelim; ve durum=1 ise satış içi durum=0 ise satış dışı olsun kitabımız.
SELECT kitap.id as  kid, kitap.isim, kitap.kapak, galeri.id as gid, galeri.kitap_id FROM kitap, galeri WHERE kitap.id=galeri.kitap_id and kitap.durum=1

Yukarıdaki kod satırının en sonunda yer alan “and kitap.durum=1″ kodu ile ve kitap tablosunda durum ‘u 1 olan yani satış içi olan demiş olduk.

Mysql DATEDIFF Tarih Arası Hesaplama

Veri tabanımızda yer alan verilerin; kullanıcıların, kayıtlı olan stokların vb verilerin kaç gün önce eklendiğini veri tabanına hesaplıya biliriz. Veya üyenin kaç gün önce kayıt olduğu, en son kaç gün önce login olduğu vb işlemleride DATEDIFF(iki tarih arasını hesaplama) komutu aracılığı ile hesaplıya biliriz.

Örnek olarak kitap veri tabanımızda yer alan kitapların kaç gün önce veri tabanımıza kaydedildiğini hesaplıyalım.

SELECT DATEDIFF(NOW(),tarih) as gecen_gun FROM kitap;

[ad#satir]

Yukarıdaki kodlarda; NOW() şimdiki zamanı belirtiyor, tarih ise veri tabanımızdaki tarih sütunundan gelen tarih bilgisini belirtmektedir. Gelen sonuçları gecen_gun adıyla oluşturmuş olduğumuz sana bir sütunda göstermiş olduk.

PHP HTTP Authentication

Occasionally you may wish to make certain pages of your site only viewable to a select few. you can do this by using PHPs built in HTTP Authentication. The code needs to go right at the top of your php page so don’t get ‘Headers Already Sent’ errors. You can see that we’ve specified the username and password in the variables at the top of the script you can change these to reflect your own username and password.

You could easily make this authentication more dynamic by checking a database for the username and password. We can get whatever the user typed into the dropdown box by specifying the following superglobals.

//Username:
<?php echo $_SERVER['PHP_AUTH_USER'];?>
//Password:
<?php echo $_SERVER['PHP_AUTH_PW'];?>

<?php 

$config['admin_username'] = "demo";
$config['admin_password'] = "demo";

if (!($_SERVER['PHP_AUTH_USER'] == $config['admin_username'] && $_SERVER['PHP_AUTH_PW'] == $config['admin_password'])) {
    header("WWW-Authenticate: Basic realm=\"Papermashup.com Demo Admin\"");
    header("HTTP/1.0 401 Unauthorized");
	echo 'This is what happens if you press cancel';
	?>
<?php
    exit;
}
// if the username and password match show the rest of the content

?>

Be careful when coding the HTTP header lines. In order to guarantee  maximum compatibility with all browsers, the keyword “Basic” should be  written with an uppercase “B”,
the realm string must be enclosed in  double (not single) quotes, and exactly one space should precede the 401  code in the HTTP/1.0 401 header line.