💻 Bilgisayar, 💾 Programlama

PHP: Hafta 7

php logoBu hafta genel olarak sessionları tekrar ettik. Bunun dışında bazı teknolojilerden ve biraz da bitirme projesinden bahsettik. Bitirme projesinin son teslim tarihinin 7 Ocak 2010 Perşembe olduğunu unutmayınız. Projeye buradan ulaşabilirsiniz.

Bugünkü tekrar sonucunda sessionlar ve veri tabanı kullanarak basit bir oturum açma sistemi tasarladık derste. Ödev için de oldukça kullanışlı olabilecek, sessionsların kullanımına güzel bir örnek olan kaynak kodlarını bu yazının sonunda bulabilirsiniz.

Gelecek hafta Salı günü için bir ek ders planlandı, ancak kesin bir şey yok şu noktada. O gün boş laboratuvar olup olmadığını öğrendikten sonra netleşecek. Duyuru yapacağım.

24 Aralık Perşembe günü laboratuvarda yazdığımız kodları buradan indirebilir, ya da indirmeden incelemek isterseniz yazının devamına bakabilirsiniz. (Kodlar daha anlaşılır olması için biraz daha düzenlenmiştir.)

index.php

<?php 
	/* DİKKAT: Bu koddaki oturum açma sistemi, gerçek bir PHP
	projesinde kullanılamayacak kadar dış etkilere açık olduğundan
	kodu dikkatli kullanmanızı öneririm. */
	header("Content-Type: text/html; charset=utf-8"); 
	session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="tr-TR">
<head profile="http://gmpg.org/xfn/1">
	<!-- EgeBK PHP Kursu Örnek Kaynak Kodları -->
	<title>Basit Bir Oturum Açma Programı</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta http-equiv="author" content="Umut Benzer" />
</head>
<body>
<form action="index.php" method="post">	
	<label for="name">Kullanıcı adı</label> 
	<input type="text" id="name" name="name" size="10" />
	<label for="pass">Şifre</label>
	<input type="text" id="pass" name="pass" size="10" />
	<button type="submit">Yallah</button>			
</form>
<?php
/* İnit */

// ezSQL
include_once "ez_sql_core.php";
include_once "ez_sql_mysql.php";

// Veritabanı yapılandırması
$vt_kullanici="root";
$vt_parola="";
$vt_isim="kullanici";
$vt_sunucu="localhost";

// ezSQL sınıfından bir nesne...
$db = new ezSQL_mysql($vt_kullanici,$vt_parola,$vt_isim,$vt_sunucu);

// Dil ayarlaması
$db->query("SET NAMES utf8");

/* Oturum kapatma bilgisi gönderilmiş */
if(isset($_GET["cikis"]) && $_GET["cikis"] == 1) {
	$_SESSION["kullanici_id"] = NULL;
	$_SESSION["kullanici_adi"] = NULL;
}

/* Oturum açma bilgisi gönderilmiş */
if(isset($_POST["name"]) && isset($_POST["pass"])) {
	// Güvenlik önlemleri
	$name = $db->escape($_POST["name"]);
	$pass = $db->escape($_POST["pass"]);
	
	$sql = "SELECT * FROM `kullanici` WHERE name='".$name."' AND pass='".$pass."'";
	echo "Yaratılan SQL cümleciği: " . $sql . "<br />\n";
	$sonuc = $db->get_row($sql);

	if(!is_null($sonuc)) {
		$_SESSION["kullanici_id"] = $sonuc->id;
		$_SESSION["kullanici_adi"] = $sonuc->name;
	} else {
		$_SESSION["kullanici_id"] = NULL;
		$_SESSION["kullanici_adi"] = NULL;
		echo "Kullanıcı adı veya şifre yanlış!" . "<br />";
	}
}

/* Oturum açılmış mı kontrolü */
if(isset($_SESSION['kullanici_adi']) && !is_null($_SESSION['kullanici_adi'])) {
	echo "Oturum açan kullanıcı: " . $_SESSION['kullanici_adi'] . " Oturumu kapatmak için <a href='?cikis=1'>tıkla</a>.";
} else { 
	echo "Naber ziyaretçi?";
} 

/* SESSION süperdeğişkeninde neler olup bitiyor? */
echo "<br />";
echo var_dump($_SESSION);
?></body>

Veri Tabanı Yapısı (SQL)

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Dec 24, 2009 at 09:09 PM
-- Server version: 5.1.36
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `kullanici`
--
CREATE DATABASE `kullanici` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `kullanici`;

-- --------------------------------------------------------

--
-- Table structure for table `kullanici`
--

CREATE TABLE IF NOT EXISTS `kullanici` (
  `name` text NOT NULL,
  `pass` text NOT NULL,
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=XtraDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

--
-- Dumping data for table `kullanici`
--

INSERT INTO `kullanici` (`name`, `pass`, `id`) VALUES
('Hayrullah', 'abc', 2),
('Sercan', 'def', 3),
('Rıfkı', '123', 4),
('Müge', 'wasd', 11);
👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir