nedir

<input alt="BUL" border="0" cache name="submit" src="img/bul.gif" type="image">

kaynak: ordan burdan

<?
function rainbow($text) {
$colors = array('ff00ff','ff00cc','ff0099','ff0066','ff0033','ff0000','ff3300'
,'ff6600','ff9900','ffcc00','ffff00','ccff00','99ff00','66ff00'
,'33ff00','00ff00','00ff33','00ff66','00ff99','00ffcc','00ffff'
,'00ccff','0099ff','0066ff','0033ff','0000ff','3300ff','6600ff'
,'9900ff','cc00ff');
$i = 0;
$textlength = strlen($text);
while($i<=$textlength){
foreach($colors as $=>$value){
if ($text[$i] != "") echo "<font color="#".$value."">".$text[$i]."</font>";
$i++;
}
}
}
?>

kaynak: ordan burdan

<?
$login_url = "http://localhost/login.";
$refresh_time = 10; //time out in minutes

function user_isloggedin() {
global $LOGGED_IN, $refresh_time;
echo "<META HTTP-EQUIV=Refresh CONTENT="" . $refresh_time * 60 . "; URL=" . $login_url . "">";
if (isSet($LOGGED_IN)) {
return $LOGGED_IN;
}
if (@$_COOKIE['username'] {
$c_hour = date("H"); //Current Hour
$c_min = date("i"); //Current Minute
$c_sec = date("s"); //Current Second
$c_mon = date("m"); //Current Month
$c_day = date("d"); //Current Day
$c_year = date("Y"); //Current Year

$c_timestamp = mktime($c_hour,$c_min,$c_sec,$c_mon,$c_day,$c_year);

$t_timestamp = trim($_COOKIE['stamp']);
$diff = $c_timestamp - $t_timestamp;

if ($diff > $refresh_time * 60) {
user_logout(true);
$message = urldecode("Your session has been inactive for $refresh_time minutes.<br/>Please login again.");
header("Location: login.?message=$message");
return true;
} else {
setcookie('stamp', $c_timestamp, (time()+2592000), '/', '', 0);
return true;
}
} else {
return false;
}
} else {
return false;
}

function user_logout($timeout) {
setcookie('username', '', (time()+2592000), '/', '', 0);
}
// Function to start the session on a successful login attempt
function user_set_tokens($user_name_in) {
global $supersecrethashpadding;
$c_hour = date("H"); //Current Hour
$c_min = date("i"); //Current Minute
$c_sec = date("s"); //Current Second
$c_mon = date("m"); //Current Month
$c_day = date("d"); //Current Day
$c_year = date("Y"); //Current Year

$stamp = mktime($c_hour,$c_min,$c_sec,$c_mon,$c_day,$c_year);

if (!$user_name_in) {
$feedback = "ERROR - No username";
return false;
} else {
$username = $user_name_in;
setcookie('username', $username, (time()+2592000), '/', '', 0);
setcookie('stamp', $stamp, (time()+2592000), '/', '', 0);
}
}
?>

kaynak: ordan burdan

$message = preg_replace("/((?:[A-Za-z0-9-_.&+]+)@(?:[A-Za-z0-9-]+.)+[A-Za-z-]+)/", "[Email Removed]", $message);

kaynak: ordan burdan

<?
function md5plus($string, $password)
{
$out = md5(string.$password);
$out = $out.md5($password);
$out = md5($out);
for($i=0;$i<strlen($password);$i++)
{
$out .= md5($out);
}
$out = md5($out).strlen($password).md5($out);
$out = md5($out);
return $out;
}
?>
echo md5plus("TEST", "somepass");

kaynak: ordan burdan

// This script will generate 14 Character long very secure password
function secure_pass()
{
// The total length of the password is PASS_LEN + LEVEL1_LEN + LEVEL2_LEN
$PASS_LEN = 10; // Length of basic password (a-z)
$LEVEL1_LEN = 2; // Number of level 1 characters (1-9)
$LEVEL2_LEN = 2; // Number of level 2 characters (any other)

$LEVEL0 = 'abcdefghijklmnpqrstuvwxyz'; // no security
$LEVEL1 = '123456789'; // better security
$LEVEL2 = '_-!?*:.'; // best security

srand((double)microtime()*1000200);
$password = NULL;

// Level 0 password generation
for ($i=0;$i<$PASS_LEN;$i++)
$password = $password.$LEVEL0{rand(0,strlen($LEVEL0))};

$pos = rand(0,strlen($password)-1);
$password{$pos} = strtoupper($password{$pos});

// Level 1 mix up
for ($i=0;$i<$LEVEL1_LEN;$i++)
{
$pos = rand(0,strlen($password)-1);
$password = substr($password,0,$pos).$LEVEL1{rand(0,strlen($LEVEL1)-1)}.substr($password,$pos);
}

// Level 2 mix up
for ($i=0;$i<$LEVEL2_LEN;$i++)
{
$pos = rand(0,strlen($password)-1);
$password = substr($password,0,$pos).$LEVEL2{rand(0,strlen($LEVEL2)-1)}.substr($password,$pos);
}

return $password;
}

kaynak: ordan burdan

<?
function delete_dir($dir){
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($dir."/".$file)){
delete_dir($dir."/".$file);
}else{
chmod($dir."/".$file,0777);
unlink($dir."/".$file);
}
}
}
closedir($handle);
}
rmdir($dir);
}
?>

kaynak: ordan burdan

<?
function calendar($time=NULL){

// $time must be a valid unix timestamp to be used.
if (!preg_match('#[0-9]{1,10}#i',$time))
$time = time();

// Make some useful vars.
$zt = ' '; $zn = "
"; $out = ''; $day = 0;
$wd = array('Su','Mo','Tu','We','Th','Fr','Sa');
$utd = 86400; // Seconds in a day.

// Get the year and month based on $time.
$info = explode(' ',date('Y m',$time));

// Unix timestamp of the first and last day of the month.
$ut1 = mktime(0,0,0,$info[1],1,$info[0]);
$ut2 = mktime(0,0,0,$info[1],date('t',$ut),$info[0]);

// Output line 1: Full month and year.
$out .= rtrim(str_pad(date('F Y',$ut1),20,' ',STR_PAD_BOTH)).$zn;

// Output line 2: Days of the week.
for ($i=0;$i<count($wd);$i++){
$out .= $wd[$i];
if ($i < count($wd)-1) $out .= $zt;
}
$out .= $zn;

// Output lines 3 and up.
for ($ut=$ut1;$ut<=$ut2;$ut+=$utd){
$day++;

// Output line 3: Empty days.
if ($day == 1){
for ($i=0;$i<date('w',$ut);$i++){
$out .= ' '.$zt;
}
}

// Output: The day.
$out .= str_pad($day,2,' ',STR_PAD_LEFT);

// Output: Newline or tab.
if (date('w',$ut) == 6 || $day == date('t',$ut))
$out .= $zn; else $out .= $zt;

// If last day, stop.
if ($day == date('t',$ut))
break;
}

// Return the calendar!
return $out;
}
?>

kaynak: ordan burdan

<?
header("Content-Type: application/vnd.ms-excel");

echo "<table border=1>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>";
?>

kaynak: ordan burdan

<?
$filename = "hits.txt" ;

if(!file_exists($filename)){
$fd = fopen ($filename , "w+");
fclose($fd);
}

$file = file($filename);
$file = array_unique($file);
$hits = count($file);
echo $hits;

$fd = fopen ($filename , "r");
$fstring = fread ($fd , filesize ($filename)) ;
fclose($fd) ;
$fd = fopen ($filename , "w");
$fcounted = $fstring."n".getenv("REMOTE_ADDR");
$fout= fwrite ($fd , $fcounted );
fclose($fd);
?>

kaynak: ordan burdan

<?
$array = array(1, "hello", 1, "world", "hello");

print_r(array_count_values($array));

?>

kaynak: ordan burdan

Açılan listeler
İlk olarak ele almak istediğim konu açılan (dropdown) listeler ile ilgili. Biliyorsunuz ki açılan listeler yapmak üzere select option etiketleri birlikte kullanılır. Örnek olarak Türkiye'nin illerinden oluşan kısa bir liste hazırlayalım. Bu liste Marmara, Ege Akdeniz bölgelerinden 3 adet şehir içersin.

Böyle bir liste hazırlamak için genellikle alttaki gibi bir kodlama yapılıyor:

<select>
<option> Marmara -> İstanbul </option>
<option> Marmara -> Bursa </option>
<option> Marmara -> Kocaeli </option>
<option> Ege -> İzmir </option>
<option> Ege -> Aydın </option>
<option> Ege -> Denizli </option>
<option> Akdeniz -> Antalya </option>
<option> Akdeniz -> İçel </option>
<option> Akdeniz -> Adana </option>
</select>

<?

$yazi='bu yazı http://www.codecodu.com';
$yazi = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href="\0">\0</a>", $yazi);
echo $yazi;
?>

kaynak: ordan burdan

ile çalışırken genellikle verilerimizi MySQL yada MSSQL gibi veritabanı sistemlerinde depolarız ancak bazı durumlarda veritabanı kullanmak gereksiz olabilir yani küçük bir txt dosyası ile işinizi halledebilecekken niye koskaca veritabanını kullanasanız ki? Bu Yazımda ile TXT Dosyalarını kullanırken yapabileceğiniz işlemleri anlatacağım. Dosya ,Kapama,İçine Veri Yazma, Okuma gibi..

TXT Dosyasını Açmak
Bir TXT Dosyasını açmak için aşağıdaki fonksiyonu kullanabilirsiniz.

<?

$fp = fopen( "notes/data/dosyaadi.txt" , "w" );

?>

Bu Fonksiyonun aldığı 1. parametre açılacak dosyanın yolunu belirtir. 2. Parametremiz ise dosyanın hangi kipte açılacağı olarak belirtebiliriz. Buraya hangi harflerin yazılabileceğine buradan bakabilirsiniz.
Bazı Durumlarda Dosyayı açarken sorunlar oluşabilir sorun oluşup oluşmadığını anlamak eğer var ise bir mesajı göstermek için şu kodu kullanabilirsiniz.

<?

if(!$fp)

{

echo "Dosya Açılamadı, Lütfen Sonra Tekrar Deneyin.";

exit;

}

?>

bu kodu koyduğunuz takdirde yorumlayıcısı eğer Dosyayı herhangi bir nedenden dolayı açamaz ise mesajı veriyor sayfanın yorumlanmasını durduruyor.

TXT Dosyasına Veri Yazmak
Bu işlem için fwrite() fonksiyonunu kullanacağız. kodlar aşağıda, açıklamaları ise onunda altında yazıyor

<?

$metin = "Bu birinci satır.
Bu 2. satır.
Aha buda 3. satır.";

fwrite( $fp, $metin );

?>

Fonksiyonun aldığı parametreleri yaptığımız işi kısaca anlatmak gerekirse. öncekikle $metin adlı bir değişken oluşturduk bu değişkene bir değer verdik. ' . ' işaretlerinden sonra kullandığım
işareti ise bir alt satıra geçmeeyi ifade ediyor yani
koyarak yazdığınız zaman Veriler yazılırken
işaretinden sonra bir alt satıra yazıyor, eğer yazmaz iseniz siz istediğiniz kadar değişken değeri verirken enter ile bir alt satıra inin metin tek satır olarak kaydedilecektir.
Gelelim fwrite() fonksiyonuna bu fonksiyonda 2 tane parametre alıyor bunlardan birinci olan TXT dosyasına bağlanırken yaratmış olduğumuz değişkenin adı (bunu çoğu işlemde kullanıcaz, kısa bir isim vermeniz sizin açınızdan daha yararlı olabilir) 2. parametre ise TXT dosyası içine ne yazılacağı. biz burda direk değişken adı verdik siz " " işaretleri arasına istediğiniz metni yazabilirsiniz ama değişkene atamanız olunur. Bu fonksiyon ile ilgili daha detaylı bilgi için tıklayınız.
TXT Dosyasına Açılan Bağlantıyı Kapatma
Bu işlem ise belkide yapacağımız en basit işlemlerden biri. bazı arkadaşlar "açılan dosyayı kapatmalıyız?" diye sorabilirler, çünkü eğer kapatmaz iseniz aynı anda bir başka şahıs üzerinden dosyaya erişmeye çalıştığında sorunlar oluşabilir bu sebeple kapatmak en sağlıklısı kapatma işlemi için kodlar ise aşağıda.

<?

fclose( $fp );

?>

fclose() fonksiyonu yalnızca 1 tane parametre alıyor oda bağlanırken kullandığımız değişkenin adı..
daha detaylı bilgi istiyorsanız sizi buraya alalım..
TXT Dosyasından Okumak
Bu işlemide yine 'nin bize sunduğu fonksiyonlarla yapacağız. buyrun kodlar.

<?

$dosya = fread( $fp, filesize( $dosyaadi ) );

?>

bu fonksiyonu aldığı parametreleri açıklamak gerekirse. fread() fonksiyonu, 2 tane parametre alıyor 1. parametre göreceğiniz tahmin edebileceğiniz gibi TXT dosyasına bağlanırken kullandığımız değişken, 2. parametremiz ise dosyanın ne kadarlık boyutunu okuyacağımız. örneğin bir satır okumak istiyorsanız buraya 1024 girebilirsiniz biz tamamını okumak istediğimiz için 'nin Dosya boyunu kb cinsinden bulmaya yarayan filesize() fonksiyonu ile tüm dosyanın boyutunu verdik. burda $dosyaadi adlı değişken fopen() fonksiyonunda 1. parametreye verdiğimiz değer olabilir. bu fonksiyon ile ilgili detaylı bilgiyede bu adresten ulaşabilirsiniz.
TXT Dosyasını Silmek
Başlığa dikkatinizi çekerim, TXT dosyasından birşey silmeyi değil komple dosyayı sunucudan silmeyi kastediyorum bununla bu işlemide yine basit bir fonksiyon ile yapacağız. ahanda kodlar

<?

unlink( "notes/data/names.txt" );

?>

kaynak: ordan burdan

MySQL'de bir çok veri türü oluşturulabilir. Ancak Web programları açısından önemli olan bir kaçı özellikleri şöyle saralanabilir:

INT Tamsayı: -2147483648'den 2147483647 kadar değişen diziye "signed" (işaretli), 0'dan 4294967295'e kadar değişenine "unsigned" (işaretsiz) denir.

VARCHAR(n) n sayısını geçmemek şartıyla değişen boyutta karakter olabilir.

CHAR(n) Kesinlikle n sayısı kadar karakter olabilir.

TEXT En fazla 65535(2^16-1) karakter alabilen metin alanı.

MEDIUMTEXT En fazla 16777215(2^24-1) karakter alabilen metin alanı.

DATE 1000-01-01'den 9999--31'e kadar değişebilen alanı.

TIMESTAMP 1 Ocak 1970'den 18 Ocak 2038'e kadar olan Yıl+Ay+Gün+Saat+Dakika+Saniye biçimindeki zaman bilgisi.

kaynak: ordan burdan

'nin Düzenli İfadeleri'nde kolaylık sağlayan mesela ziyaretçinin bir 'da bir INPUT etiketine verdiği yanıtıların içinde olmaması veya olmaması gereken karakterleri bulmamıza imkan veren karakter grupları oluşturma yöntemini de kullanabiliriz. Sözgelimi bütün sesli hafleri aratmak için şöyle bir karakter grubu oluşturabiliriz:

[OoUuÖöAaOoEeıIiİ]

Karakter gruplarını köşeli parantez içinde yazarız. Bu deyimle, , içinde herhangi bir sesli harf bulunan bütün değerleri eşleştirecektir. Bu yöntemden yararlanarak, şu grupları kullanabiliriz:

[a-z] Herhangi bir küçük harfi bulur.

[A-Z] Herhangi bir büyük harfi bulur.

[a-zA-Z] Herhangi bir büyük veya büyük harfi bulur.

[0-9] Herhangi bir rakamı bulur.

[0-9.-] Herhangi bir rakamı, noktayı veya kesme çizgisini bulur.

[ f

] Herhangi bir -feed (kağıt çıkart), Newline (yeni satır), Return (satırbaşı) karakterini veya boşluğu (space) bulur.

Sözgelimi, bir alfanümerik değer kümesinde b3, u2, n9 gibi birincisi küçük harf, ikincisi rakam olan iki karakterlik dizileri bulmak istiyorsak, arama grubunu şöyle kurarız:

^[a-z][0-9]$

Bu deyim 'ye, a'da z'ye küçük harfle başlayan, (^işareti aranan unsurun değerin başında olması gerektiğini söylüyor) sonunda 0'dan 9'a bir rakam bulunan kelimeleri bulmasını söyleyecektir. , bu kelimenin sadece iki harfli olmasına dikkat edecektir; çünkü grubumuzun bir başı bir de sonu belirlendiğine göre, üç karakterli değerlerin bulunması imkanı yoktur.

^işareti köşeli parantez içinde grup deyimi oluştururken kullanılırsa, bu olumsuzluk anlamı taşır. Sözgelimi, iki rakamlı ancak birinci karakteri rakam olmayan fakat ikinci karakteri rakam olan değerlerin bulunması için şu deyim gerekir:

^[^0-9][0-9]$

Burada en baştaki ^işareti "başında" demektir; ancak hemen arkasından gelen grupta "rakam olmayan" demiş oluyoruz; ikinci grup sonundaki $ işareti ile "rakamla biten" anlamına geliyor. Deyimde sadece baş sonu gösteren iki eşleştirme unsuru bulunduğuna göre bu deyim, "başında rakam olmayan, sonunda rakam olan iki karakterli değerleri" bulmaya yarayacaktır. Bu deyim söz gelimi 13'ü bulmayacak, fakat u2'yi bulacaktır. Bu yöntemle şu grupları yapabiliriz:

[^a-z] Küçük harf olmayan herhangi bir harfi bulur.

[^A-Z] Büyük harf olmayan herhangi bir harfi bulur.

[^\/^] , / veya ^ dışında herhangi bir karakteri bulur.

[^"'] Çift tek dışında herhangi bir karakteri bulur.

Grup oluşturmada kullandığımız özel karakterler de vardır. Örneğin nokta işareti (.), yeni satır başlangıcı olmayan herhangi bir karakter anlamına gelir. Dolayısıyla,

^.0$

deyimi yeni satırla başlamayan sıfır ile biten herhangi iki karakterli değeri bulacaktır.

'nin kullanılmaya hazır özel Düzenli İfade eşleştirme grupları da vardır:

[[:alpha:]] Herhangi bir harf

[[:digit:]] Herhangi bir rakam

[[:alnum:]] Herhangi bir harf veya rakam

[[:space:]] Herhangi bir boş karakter

[[:upper:]] Herhangi bir büyük harf

[[:lower:]] Herhangi bir küçük harf

[[:punc:]] Herhangi bir noktalama işareti

[[:xdigit:]] Herhangi bir Hexadecimal karakter. [0-9a-fA-F]

Karakter eşleştirmede tekrar sayısı da bir özellik olarak kullanılabilir. Tekrar sayısı belirtmek için süslü parantez ({}) kullanırız. Örnekler:

^a{4}$ İçinde sadece dört küçük a harfi bulunan kelimeleri seç: aaaa.

^a{2,4}$ İçinde sadece iki üç veya dört küçük a harfi bulunan kelimeleri seç: aa, aaa, aaaa gibi

^a{2, } İki veya daha fazla küçük a harfi bulunan kelimeleri seç: haar, haaar, haaaar gibi. Bu deyim "har" kelimesini seçmez.

{2} Ardarda iki sekme işaretini bul

.{2} Herhangi çift karakteri bul: aa, &&, == gibi

^-{0,1}[0-9]{1,}$ Negatif veya pozitif herhangi bir tam sayıyı bul

^[0-9]{1,}$ Pozitif herhangi bir tam sayıyı bul

Bu tür deyim oluşturma işlemleri giderek karmaşıklaşabilir. Örneğin:

^-{0,1}[0-9]{0, }.{0,1}[0-9]{0, }$

Bu karmaşık deyim aslında sadece "Negatif veya pozitif bir ondalık (double) değeri bul," anlamına geliyor. Kısaca irdelersek, aranan degerin sıfır veya bir kere tekrarlanan bir kesme çizgisiyle başlayabileceğini ("Sıfır veya bir kere" demek, olsa da olur, olmasa da anlamına geliyor!) bunu sıfır veya daha fazla kere tekrarlanan bir rakamın izleyebileceğini, onu da sıfır veya bir kere tekrarlanan bir nokta işareti ile sonunda sıfır veya daha fazla kere tekrarlanan herhangi bir rakamın izleyebileceğini söylemiş oluyoruz.

bu tür karmaşık ifadelerin hatasız yazılmasını sağlayan kısayollara sahiptir. Bunları sıralayalım:

? {0,1} anlamına gelir. Kendisinden önce yer alan unsurun en az sıfır en çok bir kere tekrar edilmesi gerektiğini (olmayabileceğini ama olursa en fazla bir kere olabileceğini) belirtir.

* {0, } anlamına gelir. Kendisinden önce yer alan unsurun sıfır veya daha fazla kere tekrar edilmesi gerektiğini (tümüyle opsiyonel olduğunu) belirtir.

+ {1, } anlamına gelir. Kendisinden önce yer alan unsurun en az bir veya daha çok kere tekrar edilmesi gerektiğini (bulunmasının zorunlu olduğunu) belirtir.

Bu kısa-yolları kullanarak, yukarıdaki karmaşık ifadeleri basitleştirelim:

^[a-zA-Z0-9_]+Ş En az bir harf veya rakam veya altçizgi içeren herhangi bir kelime

^[0-9]+Ş Herhangi bir pozitif tamsayı

^-?[0-9]+Ş Herhangi bir tamsayı

^-?[0-9]*.[0-9*$]+Ş Herhangi bir kesinli (double) sayı

Bir Düzenli İfade'nin yazılışında birden fazla arama-sıralanış deyimine yer verebiliriz. Bunu yapmamızı sağlayan | işaretidir. Örneğin,

.com|.co.uk

ifadesi ile, ya ".com" ya da ".co.uk" değerlerinin bulunmasını sağlayabiliriz. Burada | işareti "veya" kelimesi gibi düşünebilirsiniz.

Düzenli ifadeler yoluyla INPUT etiketinden gelen değerleri incelerken yapmak kolaydır. Bunun için kendi ifadelerinizi mutlaka sçeşitli olasılıklara şı sınamalısınız. Bu ün başında örnek olarak verdiğimiz Düzenli İfade'yi hatırlıyor musunuz?

^.+@.+\..+$

Örneğin bu ifade, ziyaretçinin elektronik posta adresini yazması gereken bir INPUT etiketinin sağladığı değerin gerçekten elektronik adres biçimi taşıyıp taşımadığını sınar. Baştaki ^ nokta işaretleri ile artı işareti değerin önünde boşluk olmamasını sağlıyor; @ işareti ise değerin içinde @ bulunması gerektiğine işaret ediyor. Tekrar eden nokta artı işaretleri "ne kadar olursa olsun ne olursa olsun" anlamına geliyor. Bunu izleyen nokta karakterini gösteren (.) işaret buralarda bir de gerçekten nokta olması gerektiğini bunu izleyen nokta artı tekrar "ne olursa olsun, ne kadar olursa olsun" anlamını taşıyor. Başka bir deyişle, aradığımız değerin "herhangi bir şey" @ "herhangi bir şey daha" . "birşeyler daha" şeklinde olduğunu belirtmiş oluyoruz. Ne var ki deyimiçinde iki nokta veya iki @ işareti olan veya @ işareti ile nokta arasında bir şey bulunmayan veya @ veya noktadan öncesi ya da sonrası boş olan bütün değerleri safdışı etmeye yetmeyecektir. Sözgelimi bir ziyaretçimiz "@@@@.@@@" yazarsa, bu deyim bu değeri geçerli bir elektronik adres sayacaktır.

programlarımızda ziyaretçilerimizin verdiği değerleri çeşitli bakımlardan sınamak seçmek mümkündür; ancak hiç bir zaman yazılanların doğruluğunu garanti edemeyiz. Fakat özellikle bir metinde bulunmaması gereken işaretlleri 'ye aratabiliriz. Bunu Düzenli İfade Fonksiyonları sağlar.

kaynak: ordan burdan

fonksiyonunu Kullanabilmek için sisteminizde SMTP server kurulu olması gerekmektedir.
() Fonksiyonu:
'de göndermemize yarayan fonksiyondur.Kullanımı aşağıdaki gibidir.
( "mailadresi" , "mailkonusu" , "mailiçeriği" ,
"Mailbaşlık" ,

Şimdi yukarıda

mailadresi kısmı; yollanacak Kişi
mailkonusu;Mailin konusu
mailiçeriği;Mailin içeriği
Mailbaşlık; başlığı
Bir mailin ile yollanılacağına bakalım.

< ?
$adres = "akaleskurtefendy@.com";
$konu = " konusu";
$mesaj = " () Fonksiyonu";
("$adres","$konu","$mesaj");
echo " gönderildi";
?>

Tabiki yukarıda yazdıklarım scriptin ü.Buna bir arayüzüde hazırlayabilirsiniz.Her defasında kaynak kodla uğraşmak zorunda kalmazsınız.

'de göndermenin tek eksi yönü sadece text bazlı yollayabilmesidir.

Tüm linuxlarda 2000 sistemlerde SMTP server kuruludur.

kaynak: ordan burdan

Bir dizinin içindeki değerleri alfabetik-küçükten büyüğe doğru sıralamak için sort() fonksiyonunu Kullanılır.
Örnek Kullanım ;
$sevgililer_im = array ( "PINAR" , "EZGİ" , "DİLARA" , "DENİZ", "ZEYNEP" , "MERVE" , "TİLBE");

sort ($sevgililer_im);

sort() fonksiyonu belirlediğiniz işlemleri A'dan Z'ye sıraya sokar. 4.0 üstü çe karakterleri çalıştırıyor ama altı 4.0 çalıştırmıyor.sort() fonkisyonu küçükten büyüğe doğru sıralar.

rsort() fonksiyonu ise büyükten küçüğe doğru sıralayabilir

kaynak: ordan burdan

<?
$ilet= $_POST["ilet"];
$klas = "denemekontrol.";
$baglan = fopen ($klas, 'w') or die ("dosya acilmadi!");
fwrite($baglan , $ilet);
fputs($baglan, "//");
fclose($baglan);
?>

kaynak: ordan burdan

*Degiskenler mutlaka bir harf ile baslamalidir.(adi,soyadi,telefonu,ahmet,mehmet)

*Degiskenleri sonlarina koydugumuz ";" sayesinde hatalarin önüne geçeriz,bu komutla bir nevi Kodlamami incele deriz..

degisken örnegi;

var adi=mehmet; / degiskene adi adini verdik

var soyadi=alp; /yine degiskene soyadi adini verdik

var adi_soyadi=adi + soyadi; /burda degiskene adisoyadi adini verdik adi + soyadini topla dedik + isaretiyle.

Simdi bunlari hesapladik ancak sayfaya Basmamiz gerekiyor Bunuda writeln Komutuyla yapacagiz. diger diller gibi ingilizce üzerine kurulmustur,birçok komut ingilizcedir.write=yaz

document.write("Adi Soyadi" , adi_soyadi, "!");

ayni sekilde sayi toplayabilirsiniz veya bir diger degiskeni yazmak için alt satira geçmenize gerek yok degiskenden sonra , atarsaniz diger degiskeni yazabilirsiniz.

Simdide prompt();

Javascriptte ziyaretçiden bilgi almamin 2 yolu vardir biri yardimiyla digeriyse prompt() komutudur.

prompt ("soru" , "cevap")
var soru = prompt ("soru","cevap")

prompt() la ilgili bir örnek yazip Inceleyelim.

<!-//
var ad = prompt ("adiniz" , "Adiniz?");ad degiskeninde prompt açtirdik adi sorduk.
document.write("Merhaba, ad , "!");write komutuyla ad degiskeninden aldigimiz bilgiyi sayfaya yazdirdik.
//->

Simdide javascriptte if-then-else konusunu inceleylim.Hemen hemen her programlama dilinde if-then-else ayni amaçla kullanilir.

if(x==y)

if(belirlenen sartlar saglanirsa)

else(sartlar saglanmazsa,yanlis)

var örn = prompt("Nasilim?" , "iyi veya Kötü");
if(örn = = "iyi") {
alert ("eyvallah!");
}else{
alert("kaybol!");
}

if-else bir örnek daha

var yas = prompt ("Kaç Yasindasin" ,"Sadece Rakam Giriniz");
if (yas=="18-60")
{
document.write ("Senin Yasin " , yas , " ")
document.write (" bir yas" )
}
else
{
document.write ("Iyi Günler")
}
->

*Mutlaka if ile baslamalidir.

scriptlerin Çalismasi Için kodlarinizi

<body>
<script language="">
<!- //
scriptlerin Çalismasi için kodlar buraya yazilcak
//->
</script>
</body>

seklinde yazmalisiniz.

Döküman Kurtefendy Tarafindan SaVSaK.CoM Için yazilmistir.

Yeni Konu açmiyorum bu konu altindan dökümanlara devam.

DERS-2: ,new array fonksiyonu,degiskenlerin kullanimi(ileri seviye) alert mantiksal ifadeler.

alert;

alertle kullaniciyi uyarabilir,herhangi bir konu hakkinda bilgi verebilirsiniz.

alert örnegi;

<>
<script language="">
function kurtbaba()
{
alert("alert örnegi")
}
</script>
<body>
<center>
<p><b>Alert</b></p>
<input type="button" value="alert" onclick="kurtbaba()">
</body>
</>

Simdide 2 degisken tanimlayalim, bunlari sayfa içine koydugumuz 2 butonla tek tek çagiralim alertle yine.

<>
<title>alert,degisken çagirma örnegi</title>
<script language="">
var sayi = '2'
var sayi1= '1'
function kurtbaba1()
{
alert("kurtbaba1. fonksiyon, sayidegiskeniniçagirdik ="+sayi)
}
function kurtbaba2()
{
alert("kurtbaba2, sayi1degiskeniniçagirdik ="+sayi )
}
</script>
<body>
<center>
<p><b>Genis alert,degisken örnegi</b></p>
<p>1.degiskenimizi çagiriyoruz</p>
<input type="button" value="sayi" onclick="kurtbaba1()"><br>
<p>2.degiskenimizi çagiriyoruz</p>
<input type="button" value="sayi1" onclick="kurtbaba2()">
</body>
</>

Burdada dikkat edilmesi gerekn nokta diger örneklerde function komutunu kullanmadik function=fonksiyon,1.ci functionda kurtbaba1'i tanimlayip çagirdik yine 2.functiondayda kurtbaba2 yi tanimlayip çagirdik

Simdide new Array komutunu anlatalim,javascriptte sevdigim en özelliklerden biri bir örnek verip açiklayalim.

<>
<script language="">
function newarray_örnek()
{
var isim
isim = new Array("ahmet","mehmet","aydin","sercan","ezgi","hasan","Hüse yin","emin")
alert("aileniz= "+isim[0]+isim[1]+isim[2]+isim[3]+isim[4]+isim[5]+isim[6]+isim[7])
}
</script>
<body>
<center>
<p><b>Dizi Degisken ÖrneGi<b></p>
<input type="button" value="newarray'aörnek" onclick="newarray_örnek()">
</body>
</>

Simdi burda isim adinda bir degisken olusturduk new Array komutu sayesinde alertte ayni degisken üzerinden istedigimzi bilgileri [0],[1] ,[3] vs vs devam eder gösterebilirsiniz. array fonksiyonunda dikkat etmeniz gerekn tek nokta yazim biçimidir

new array seklinde yazarsaniz çalismaz.

new Array seklinde olmalidir,A mutlaka büyük olmalidir.

Simdilik bu kadar yeter uykum geldi iyi geceler :)

DERS-3 Yazim Kurallari pencere (window.open)Komutu

Yazim Kurallari Javascriptte oldukça önemli bir Konudur yapilan en ufak script in çalismamasina olur bu yüzden kurallarina uygun sekilde kodlama yapmak gerekir.

*Tanimladiginiz her degiskenden sonra Mutlaka ";" koymalisiniz aksi takdirde script çalismaz.

*Degisken adlarinda bosluk birakilamaz.

*Ayrica javascripttte bazi komutlar vardirki Bunlar degisken ismi olamaz Simdi size degisken olamayacak bir kaç komutu söyleyeyim.

degisken array,alert,short,static,location,netscape,True,False,while, window, string,long, math,menubar,number,setTimeout… gibi adlar alamaz. Tam liste için kullanin.

*js kodlariniz mutlaka <body> </body> taglari arasinda olmalidir.

*Degisken sayi-karakterle baslayamaz. Yazim kurallari hakkinda konunun en basinda da 1-kaç özellik yazmistim Bu kadar yeterli Simdilik.

Simdide window.open KOmutu:Adindanda anlasildigi gibi window=pencere open=aç pencere aç :)

Birazdan bir-kaç örnekle anlatacagim tam olarak ama bir iki fonksiyon var onlari anlatayim.

top = 30 : Pencernin ne kadar yukarida olacagini belirtir.

Location=100:Pencerenin adres kutusnu belirtir.

left 60:Pencernin ne kadar solda olacagini belirler.

width = 400:Pencere genisligini ifade eder.

height = 250:Pencere yüksekligini ifade eder.

menubar=yes:Menü çubugunu belirtir.

screenx=100: Ne kadar solda oalcagini belirtir,IE de bu komut çalismaz.

scrollbars : Kaydirma çubuklarini gösterip,göstermemeye yarar. scrollbars=yes,no

Küçük bir window.open örnegi;

<input type="button" onclick="window.open('http://SaVSaK.CoM,",")" value="Pencerede Aç." />

Burda js inputtan aldigi buton Komutla sayfayi onclick yaaprak yeni pencerede açacaktir.

Bunu Su sekildede yapabilirsiniz.

<>
<head>
<title>Yeni Pencerede ,yeni sayfa örnegi<title>
<script language="">
function pencere()
{
//sayfa l ink: kurtbaba.
window.open("kurtbaba.") }
</script>
</head>
<body>

kaynak: ordan burdan

Script Döngü Denetimi

Her programda olduğu gibi, 'te de koşul deyimleri vardır. Bu deyimler C'de aynen kullanılmakta olan if…else deyimi switch deyimi. Bu deyimleri bilmeyen arkadaşlarımız için bu sayfayı hazırladım.

"if… else…" Koşul Deyimi

İlk koşul deyimimiz: if…else… (çesi: eğer öyleyse…değilse…). Yazılımda veriler değerlendirilirken bir yol ayrımına, elemeye gidilebilir. Mesela belli bir değerin altındakiler için başka işlemler, üstündekiler için başka işlemler yapılabilir. Verileri böyle bir elemeye tabi tutmak için if…else… koşul deyimini kullanabiliriz. Bu deyimin genel yapısı şöyledir:

if (koşul ifadesi) işlem
else işlem

birden fazla işlem söz konusuysa,

if (koşul ifadesi)
{
İŞLEMLER
}
else
{
İŞLEMLER
}

Koşul İfadeleri

Koşul ifadesi parantez içine yazılır. Koşul ifadesi verilerin izleyeceği akışı belirler. Bu koşula uyan verilere koşul ifadesinden sonraki işlemler, bu koşula uymayan verilere ise else ifadesinden sonraki işlemler uygulanır. Koşul ifadelerini belirtirken aşağıdaki işaretlerden yararlanırız:
== Eşitlik koşulunu sorgular.
degisken == 5
!= Eşit olmama koşulunu sorgular.
degisken != 5
> Büyük olma koşulunu sorgular.
degisken > 5
>= Büyük veya eşit olma koşulunu sorgular.
degisken >= 5
< Küçük olma koşulunu sorgular.
degisken < 5
<= Küçük veya eşit olma koşulunu sorgular.
degisken <= 5

Koşul deyimleri, koşul ifadesine uyanlara işlem yapar. Uymayanlara ise else kodundan sonraki işlem . else kodu kullanma zorunluluğu yoktur, kullanılmıyorsa koşul ifadesine uymayanlar, koşul deyimine girmişlerse öyle çıkarlar.

:

var yas=13;
i'f (ya's >= 18) kabul()
else red()

Bu uygulamada iki fonksiyon var: kabul() red(). ündeki kodları arasında yas değişkenini if…else… koşul deyimini göreceksiniz. Koşul deyimi yas değişkeni 18'e eşit veya 18'den büyükse kabul() fonksiyonunu, değilse red fonksiyonunu çağırıyor. Burada yas değişkenini kod içinde 13 olarak mladık, bu durumda red() fonksiyonu çağrılır barın kapısından geri çevrilirsiniz.

"switch" Koşul Deyimi
if…else… koşul deyiminde yol ayrımı söz konusudur akış ikiye ayrılır. Şimdi göreceğimiz switch kodu ise akışı ikiden fazla sayıya ayırır. Yani birden fazla koşul sözkonusudur. switch koşul deyiminin genel yapısı şöyledir.

switch (ifade)
{
case değer1: işlem1
break
case değer2: işlem2
break

case değerN: işlemN
break
default: işlem
}

birden fazla işlem söz konusuysa,

switch (ifade)
{
case değer1 :
{
işlemler
}
break
case değer2 :
{
işlemler
}
break

case değerN :
{
işlemler
}
break
default:
{
işlemler
}
}

Bu koşul eyleminde değişken switch(…) kısmına yazılır. Sonra değişkenin alabileceği değerler case: (durum) kodlarının yanlarına yazılarak koşul ifadesi yaratılır alttaki işlemler uygulanır. Eğer case: kodlarından hiçbiri değişkenin taşıdığı değeri tutmuyorsa, default: kodunun altındaki işlemler uygulanır. (default kodunun yazılması zorunlu değildir; else kodunun yazılmasının zorunlu olmadığı gibi) Buradaki break (kes) komutu önemlidir. İşlemlerin altına break kodu yazmazsak, bir alttaki case (durum) koşuluna ait işlemler de . break kodunu işlemlerin altına koyarsak, işlemler bitince bir alttaki case koşulunun işlemlerine geçilmez switch deyiminin sonundan devam eder. Buradan hareketle aynı işlemlere tabi tutulacak koşul ifadelerini alt alta yazın bu ifadelerden en altında olanın işlemlerine break komutunu uygulayın.

kaynak: ordan burdan

Script Zaman Komutları

Bu sayfada zaman yöntem kodları üzerinde duracağız. Bu kodlar zaman birimlerini ifade etmekte, nesneleri zamana göre sıralamakta sorgulamakta kullanılır. (ASP derslerinde üzerinde duracağız.)

Zaman Değişkeni mlama Yürürlükteki Zaman Değerini İfade

İlk kodumuz: new Date(). Bu kod değişkenin zaman değeri taşıdığını belirtiyor. değişkene ın saatinde yer alan zaman değerini veriyor. Aşağıdaki kodlarla bu zaman değerini özelleştirebiliriz.
getDate() Ayın kaçı olduğunu gösterir.
.getDate()
getMonth() Hangi ayda olduğumuzu gösterir. Ocak için 0, Şubat için 1, Mart için 2, …, Aralık için 11 değerini verir.
.getMonth()
getFullYear() İçinde bulunduğumuz yılı dört rakamıyla gösterir.
.getFullYear()
getHours() Saat değerini ifade eder. 24'lük sistem kullanılır.
.getHours()
getMinutes() Dakika değerini ifade eder.
.getMinutes()
getSeconds() Saniye değerini ifade eder.
.getSeconds()
getUTCHours() UTC saat değerini ifade eder. UTC bir zaman standardı; NASA falan kullanıyor olsa gerek.
.getUTCHours()
getUTCMinutes() UTC dakika değerini ifade eder.
.getUTCMinutes()
getUTCSeconds() UTC saniye değerini ifade eder.
.getUTCSeconds()
getDay() Haftanın günlerini ifade eder. Pazar için 0, Pazartesi için 1, Salı için 2, …, Cumartesi için 6 değerini verir.
.getDay()

Eğer bu kodların mlandığı değişken önceden var değişken = new Date() şeklinde mlanmazsa çalışmaz. Şimdi bir uygulamayla tüm bu kodların sonuç verdiğini görelim. Uygulama sonuçlarını, ınızın saatiyle şılaştırın.

:

Zaman Komutları Sonuçları

Uygulamayı dikkatli inceleyen okuyucular, tek rakamlı zaman birimlerinin önüne 0 gelmediğini görmüşlerdir. Yani saniye 08 yerine 8 diye geçer. (Saat yapmak isteyenlerin dikkatine.) Bir başka özellik de, bu kodlarla sadece sayfanın çalıştırıldığı anın zamanı gösteriliyor. Örneğin saniye ifadesi olduğu gibi duruyor çalıştırıldığı zamanın saniyesini gösteriyor. (Saat yapmak isteyenlerin bir daha dikkatine.)

Zaman Değeri Atama
İstersek zaman ayarlarıyla oynayabilir, istediğimiz tarihe veya saate kurabiliriz. Bu kurma işlemi için aşağıdaki komutlar kullanılır.

setFullYear() Girilen yılı ayarlar.
.setFullYear("1963")
setMonth() Girilen ayı ayarlar.
.setMonth("5")
setDate() Ayın gününü ayarlar.
.setDate("13")
setHours() Saati ayarlar.
.setHours("10")
setMinutes() Dakikayı ayarlar.
.setMinutes("34")
setSeconds() Saniyeyi ayarlar.
.setSeconds("22")
setUTCHours() UTC saatini ayarlar.
.setU'TCHours("10")
setUTCMinutes() UTC dakikasını ayarlar.
.setUTCMinutes("34")
setUTCSeconds() UTC saniyesini ayarlar.
.setUTCSeconds("22")

Dikkat ederseniz zamanı ayarlarken haftanın günlerini ayarlamıyoruz. ayarlanan yıl, ay güne göre haftanın gününü hesaplıyor. Şimdi uygulamamızı inceleyelim; her ayarlamadan sonra zaman yeniden gösteriliyor.

:

var zaman = new Date() document.write("Zaman: " + zaman) document.write("
getFullYear: " + zaman.getFullYear()) document.write("
getDate: " + zaman.getDate()) document.write("
getMonth: " + zaman.getMonth()) document.write("
getHours: " + zaman.getHours()) document.write("
getMinutes: " + zaman.getMinutes()) document.write("
getSeconds: " + zaman.getSeconds()) document.write("
getUTCHours: " + zaman.getUTCHours()) document.write("
getUTCMinutes: " + zaman.getUTCMinutes()) document.write("
'getUTCSeconds: " + zaman.getUTCSeconds()) document.write("
getDay: " + zaman.getDay())

Zaman Aralığı
Fonksiyonu harekete geçiren olayın oluşmasından belli miktar zaman geçtikten sonra birşey oluşmasını istiyorsak, setTimeout(…, …) komutu kullanılır. Örneğin bir düğmeye basıldıktan sonra uyarı kutusunun çıkmasını istiyorsak:

setTimeout("aler't('Bu mesaj 3 saniye sonra çı.')", 3000)

İlk değer parantez içinde bir kodudur, ikinci değer ise ilk değerin ne kadar süre sonra oluşacağını belirleyen, mili saniye cinsinden zaman değeridir. (1 saniye = 1000 mili saniye) Bu komut ile uyarı kutusu 3 saniye bekledikten sonra görünecektir.

setTimeout komutu daha çok zaman aralıklarıyla tekrar eden hareketler oluşturmak için kullanılır. Aşağıdaki uygulamamıza bakalım:

:

var metin;
function Slogan(n)
{
if(n%2==1) {metin="EN BÜ'YÜK"}
else
{metin="MALATYASPOR!'"}
katman.inn'erHTML=metin
setTimeout("Slogan(" + (n+1) + ")", 1000);
}
< '/script>

kaynak: ordan burdan

<>
<head>
<title></title>
<style>
<!–
#slidemenubar, #slidemenubar2{
position:absolute;
left:-155px;
width:160px;
top:170px;
border:2px solid navy;
background-color:lightblue;
layer-background-color:lightblue;
font:bold 12px Verdana;
line-height:20px;
}
–>
</style>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<!– Type your text here //–>
<script language="JavaScript1.2">

if (document.all)
document.write('<div id="slidemenubar2" style="left:-150" onMouseover="pull()" onMouseout="draw()">')
</script>
<layer id="slidemenubar" onMouseover="pull()" onMouseout="draw()">
<script language="JavaScript1.2">
var sitems=new Array()
var sitemlinks=new Array()
//extend or shorten this list
sitems[0]="………link1"
sitems[1]="………link2"
sitems[2]="………link3"
sitems[3]="………link4"
sitems[4]="………link5"
sitems[5]="………link6"
sitems[6]="………link7"
sitems[7]="………link8"
sitems[8]="………link9"
sitems[9]="………link10"
sitems[10]="……..link11"
sitems[11]="……..link12"
sitems[]="……..link13"

//These are the links pertaining to the above text.
sitemlinks[0]="link1."
sitemlinks[1]="link2."
sitemlinks[2]="link3."
sitemlinks[3]="link4."
sitemlinks[4]="link5."
sitemlinks[5]="link6."
sitemlinks[6]="link7."
sitemlinks[7]="link8."
sitemlinks[8]="link9."
sitemlinks[9]="link10."
sitemlinks[10]="link11."
sitemlinks[11]="link12."
sitemlinks[]="link13."
for (i=0;i<=sitems.length-1;i++)
document.write('<a href='+sitemlinks[i]+'>'+sitems[i]+'</a><br>')
</script>
</layer>
<script language="JavaScript1.2">
function regenerate(){
window.location.reload()
}
function regenerate2(){
if (document.layers)
setTimeout("window.onresize=regenerate",400)
}
window.onload=regenerate2
if (document.all){
document.write('</div>')
themenu=document.all.slidemenubar2.style
rightboundary=0
leftboundary=-150
}
else{
themenu=document.layers.slidemenubar
rightboundary=150
leftboundary=10
}
function pull(){
if (window.drawit)
clearInterval(drawit)
pullit=setInterval("pullengine()",50)
}
function draw(){
clearInterval(pullit)
drawit=setInterval("drawengine()",50)
}
function pullengine(){
if (document.all&&themenu.pixelLeft<rightboundary)
themenu.pixelLeft+=5
else if(document.layers&&themenu.left<rightboundary)
themenu.left+=5
else if (window.pullit)
clearInterval(pullit)
}
function drawengine(){
if (document.all&&themenu.pixelLeft>leftboundary)
themenu.pixelLeft-=5
else if(document.layers&&themenu.left>leftboundary)
themenu.left-=5
else if (window.drawit)
clearInterval(drawit)
}
</script>
</body>
</>

alt taraftakilerde(link1.,link2.) onları değiştireceksiniz

kaynak: ordan burdan

Güvenli Sanal Özel Ağlar (Virtual Private Network)

İlk başlarda kısıtlı bir kapsama sahip olması planlanan Internet 1990ların başından itibaren büyük bir hızla yayılmaya başladı. Kültürel alanda, toplumsal hayatta iş dünyasında internet artık vazgeçilmez bir yer kaplıyor. İnternete bağlanmak, internete içerik sağlamak artık olağanüstü kolay. Ama bu kolaylık bazı kötü niyetli kişiler için de söz konusu. Korsan (er) olarak adlandırılan kişiler internet sitelerine saldırıp içindeki bilgileri çalmak, değiştirmek ya da bilgisayarları hizmet veremez duruma getirmek için Internetin sağladığı bir çok olanağı kullanıyorlar. Günümüzde birçok şirket yoğunlukla Internet teknolojisini tım e-posta yolu ile iletişim amacıyla kullanmakta. Ancak mevcut güvenlik riskleri, halen şirketlerin çoğunluğunun ticari işlemlerini internet tabanlı olarak yürütme planlarına engel teşkil etmektedir. Forrester Research firmasının, en büyük 1000 şirketin yöneticilerine yönelik yaptığı araştırma sonucuna göre, yöneticilerin %48i güvenlik riskini e-ticareti engelleyen en önemli unsur olarak belirtmişlerdir.

Sanal Özel Ağlar (Virtual Private Network)

Güvenlik risklerine şın, şirketlerin ticari işlemlerini internet üzerinden yürütme isteği, sanal özel ağ kavramını doğurdu. Sanal özel ağlar, kamuya açık bağlantılar üzerinden yaratılan özel ağlardır. Sanal özel ağlar ile şirketler kendilerine, internet üzerinden, erişimi kolay ucuz özel bağlantılar oluşturmaktadırlar. Mevcut sanal özel ağlar, kullanıcıların onaylanması, verinin kriptolanması yönetim avantajları konularında şirketlere sayısız olanaklar sağlamaktadır.

Günümüzde güvenli sanal özel ağlar (kısaca VPN) uluslararası ağ pazarının önemli bir oranını oluşturmaktadır. 2001 yılında VPN pazarının yaklaşık milyar dolarlık bir büyüklüğe ulaşacağı tahmin edilmektedir.
VPN sisteminin 2 unsuru olarak şunlar belirtilmelidir:

1. Veriyi gönderenin alanın onaylanması (authentication) özelliği ile taraflar birbirlerinin kimliğinden emin olurlar.
2. Verinin kriptolanması ile gelen giden verinin yalnızca iki taraf için anlaşılır olması sağlanır. Veri kamuya açık ağlar üzerinde iletilirken, sisteme dışarıdan girerek veriye ulaşan kişi, veri kriptolanmış olduğu için hiçbir şey anlamayacaktır.
Birinci adımda iletişime geçen taraflar birbirlerinin kimliğinden emin olurlar.

İkinci adımda ise gelen giden verinin yalnızca iki taraf için anlaşılır olması sağlanır: Kamuya açık ağlar üzerinde yol alırken veriyi kapan birisi olsa da veri kriptolandığı için hiçbir şey anlamayacaktır.

Sürecin Kademeli Olarak İşleyişi

1. Bir iletmek istediği veriyi, kamuya açık ağa bağlı olan bir VPN cihazına (kaynak cihazı de denilir) açık olarak gönderir.
2. Kaynak cihaz, yöneticisinin önceden mladığı kurallara göre gelen veriyi inceler. Bu kurallar sonucunda veri ya açık olarak ya da güvenli olarak gönderilir.
3. Verinin korunması gerektiğinde kaynak cihazı veri paketini tümüyle (veriler başlık bilgisi) kriptolar onay bilgisi olarak da sayısal bir imza ekler.
4. Kaynak cihazı paket için yeni başlık bilgisi oluşturur.
5. Kaynak cihaz, gönderen alan tarafların adresini paketin başına yazar yeni bir paket oluşumunu tamamlar. Böylece orijinal veri paketi yeni bir paketin içine konulmuş olur. Buna paketleme (encapsulation) denilir.
6. Paket, hedef cihaza ulaştığında açılır, sayısal imzası kontrol edilir dekriptolama işlemi ile veriler içinden çıkartılır.
Bir işletmenin çeşitli kullanıcıları, çeşitli bilgisayarları, çeşitli hizmetleri bulunur. Bu çeşitli nesnelerin farklı veri iletişim gereksinimleri olacaktır. VPN sistemi bu farklılığı şılayabilmek için VPN kurallarını kullanır. VPN kuralları iletişimin hangi hizmet için, hangi zamanlarda gerçekleşeceğini belirler.

VPN kuralları poliçe tablolarında toplanır. Poliçe tabloları beş kısımdan oluşur:
1. Kaynak: Verinin çıktığı yer;
2. Hedef: Verinin gideceği yer;
3. Hizmet:Verinin türü;
4. Zaman: Kuralın geçerli olduğu zaman dilimi;
5. İşlem: Veri kriptolanacak mı açık mı gidecek.

Örneğin bir kuralda tüm VPN cihazları arasında FTP trafiğinin her zaman kriptolu olmasının yanısıra, bir başka kuralda da HTTP trafiğinin kriptolanmadan, açık olarak uygulanacağı belirlenebilir.

Örnek Bir VPN Uygulaması

Günümüzün en önemli VPN uygulaması ANXdir (Automotive Network eXchange). Çeşitli Amerikan otomotiv firmaları Bell Communications Researchin ortak çalışması sonucunda oluşturulan bu VPN, firmaları tek bir güvenli ağ üzerinde birleştirmektedir. Firmalar son derece ucuz kolay olan Internet erişimi üzerinden, birlikte çalışabilecekleri ticari işlemlerini güvenli bir şekilde elektronik ortama aktarabilecekleri bir yapı oluşturmuşlardır. Yalnızca bu yapı sayesinde ortalama bir otomobilin fiyatı yaklaşık 70 düşmekte tüm sektörde sağlanan tasarruf miktarı milyar dolarlar mertebesine çıkmaktadır.

kaynak: ordan burdan