PHP Kullanıcı Yetkilendirme ve Kısıtlama Sistemi

PHP Kullanıcı Yetkilendirme ve Kısıtlama Sistemi

Bu yazıda PHP kullanıcı yetkilendirme sisteminin nasıl yapılacağını ve mantığını basit bir şekilde göreceksiniz. Sayfanın en altında PHP yetkilendirme sisteminin kaynak dosyasını indirebilirsiniz. Yetki sistemi ile amaçlanan nedir? Web sitelerinde böyle bir sisteme neden ihtiyaç duyarız?

Üyelik sistemi olan veya olmayan herhangi bir web sitesine birden fazla kişi giriyor ise kullanıcı kısıtlama ve yetki kontrol sisteminin olması bu sitenin güvenliğini arttıracaktır. Siteye giren bir kişiye yetkisine göre menü gösterimi, sayfa yetkilendirmesi ve belirli bölgelere girip, belirli bölgelere girememe gibi özelliklerin bulunması web sitesine esneklik ve güvenilirlik katacaktır.

Peki bu sayfada anlatılacak örnek yetki sisteminde
neler olacak ?

  • Yetki ekleme, düzenleme, silme.
  • Varsayılan yetki düzenlenmesi. Yani üyelik sistemi olan bir siteye kayıt olan kullanıcının belirlenmiş varsayılan yetkinin otomatik olarak atanması. Yetki silinir ise o yetkiye sahip kullacınıların varsayılan yetkili rütbesine atanması.
  • Üye ekleme, düzenleme, silme.
  • Basit üyelik sistemi (kayıt ol, giriş yap). Kayıt olunurken varsayılan yetki (basit üye) olarak atanması.
  • Üyeye yetki atama, sayfa yetkilendirme mantığıyla kullanıcının sitede belirli yerlere girebilmesi, belirli işlemleri yapabilmesi, isminin yanında yetki ismi (ünvan) belirtme.

Kısaca bu makalede PHP yetki kontrol sisteminde olması gereken temel konular işlenmiştir.

PHP Yetkilendirme Sistemi Nasıl Yapılır?

Phpmyadmin üzerinden ‘yetkiler’ ve
‘kullanıcılar’ isminde 2 tane tablo oluşturuyoruz.

Yetkiler Tablosu

Yetkiler, ″yetki_ozellikler″ isimli kolonda aralarında virgül olacak şekilde saklanıyor. Mesela makale sayfasına girip makale işlemleri yapmaya yetkili olan kişiler ‘Admin’ ve ‘Yönetici’ rütbeli üyeler. Yetki renk ile kullanıcının isminin yanında ünvan olarak belirtilen rütbe isminin rengini ayarlayacağız. Yetki_varsayilan ise siteye birisi üye olduğunda otomatik hangi rütbeye sahip olması gerektiğini belirtir.

Kullanicilar Tablosu

PHP Yetkilendirme Mantığı

Bu örnekte göreceğiniz PHP yetkilendirme mantığını özetle açıklamak gerekirse;

Siteye üye olan kullanıcılar taşıdıkları rütbelere göre çeşitli yetkilere sahip olacaktır ve bu yetkilere göre belirli sayfalara girebilecekler, belirli bölgeleri görebilecekler veya göremeyeceklerdir.

Bu örnekte sitede belirli sayfa ve bölmelere isim belirledim. Bu isimlere göre yetki kontrolü yapılacak. Mesela üye ekleme ve düzenleme işlemlerinin yapıldığı “uye.php” dosyası ile yetki ekleme ve düzenleme işlemlerinin yapıldığı “yetki.php” dosyasının yetkilerdeki karşılığı “uyelik” tir. Makale işlemleri için “makale”, yorum işlemleri için “yorum”, mailler için “mail” şeklinde isimlendirme yaptım.

Phpmyadmin üzerinden oluşturduğumuz tablolarının yapıları ve barındırdıkları verileri yukarıdaki resimlerden kontrol edebilirsiniz.

Bu yetkilendirme sisteminde “Admin” rütbesine sahip kullanıcı “Muhammed Yaman”, normal “üye” rütbesine sahip kullanıcı “berat951” olarak tanımlı. “Yetkiler” tablosuna bakacak olursak “Admin” rütbesi “makale”, “yorum”, “mail”, “uyelik” yetkilerine sahipken, “üye” rütbesine sahip kullanıcının hiçbir yetkisi bulunmamakta. Siteye üye olan kullanıcı varsayılan olarak “üye” rütbesine sahip olacaktır. Bu ayarlamayı siteden yapabiliyorsunuz.

Siteye giriş yapan kullanıcının “Makaleler” sayfasına yetkisi olup olmadığını şu şekilde kontrol ediyoruz; Kullanıcının “kullanici_yetki_id” alanındaki rütbe id si üzerinden “yetkiler” tablosundan ilgili rütbenin “yetki_ozellikler” alanını çekiyoruz. Seçili rütbe eğer “Admin” ise “makale,yorum,mail,uyelik” verisini elde etmiş olacağız.

Metin parçalama için kullanılan PHP explode fonksiyonu ile elde edilen bu bilgileri virgül (,) karakterine göre parçalıyor ve dizi haline getiriyoruz. Dizi içinde arama işlemini gerçekleştiren PHP in_array fonksiyonu ile “makale” değerinin bu dizide var olup olmadığını kontrol ediyoruz. Var ise kullanıcının bu alana girme yetkisinin olduğunu anlıyoruz ve bu kontrolü sağlayan fonksiyondan “true” değeri döndürüyoruz. Bu yetki kontrol mantığıyla PHP’de yetkiye göre menü gösterimi ve sayfalara giriş kontrollerini yapabiliyoruz.

Aşağıda yetki sistemi uygulamasının kodlarını görebilirsiniz.

ayarlar.php dosyası

Veri ekleme, düzenleme, getirme işlemleri için aşağıdaki mysqli fonksiyonlarını kullanacağım. Aşağıda PHP kullanıcı yetkilendirme uygulamasında kullanacağım veritabanı bağlantı işlemleri için kullanılan mysqli komutları ve PHP session yetkilendirme işleminde session oluşturmayı daha basit hale getirmek için “session_olustur fonksiyonu” bulunmakta.

error_reporting(0);
session_start();
// Veritabani Baglanti
$host 	= 'localhost'; //host
$user 	= 'root'; //kullanici adi
$pass 	= ''; //sifre
$db		= 'auth_system'; //veritabani ismi
$baglan = mysqli_connect($host, $user, $pass, $db) or die (mysqli_Error()); //baglanti
mysqli_query($baglan,"SET CHARACTER SET 'utf8'");
mysqli_query($baglan,"SET NAMES 'utf8'");

// Fonksiyonlar
function query($query){		
	global $baglan;		
	return mysqli_query($baglan,$query);	
}

function row($query){ //row(..)['kolon_isim']
	return mysqli_fetch_assoc($query);
}

function row2($query){ //row(..)['kolon_isim'] veya row(..)[sayi]
	return mysqli_fetch_array($query);
}

function row3($query){ //row(..)[sayi]
	return mysqli_fetch_row($query);
}	

function rows($query){ //rows(..) - veri satır sayisi dondurur
	return mysqli_num_rows($query);
}

function affected_rows(){ //sorgu sonucunda etkilenen satir sayisini dondurur
	global $baglan;
	return mysqli_affected_rows($baglan);
}

function session_olustur($par){		
	foreach ($par as $anahtar => $deger){			
		$_SESSION[$anahtar] = $deger;		
	}	
}

Kullanıcının yetkisine göre sayfalara ve bölgelere girebilmesini, işlemler yapabilmesini sağlamak için aşağıdaki fonksiyonu kullanacağız.

function yetki_kontrol($rutbe,$ozellik){ //belirtilen rutbenin belirtilen yetkisi bulunuyor mu kontrol et
	$yetki = row(query('SELECT yetki_ozellikler FROM yetkiler WHERE ID=''.$rutbe.'' LIMIT 1'));
	$ozellikler = explode(',', $yetki['yetki_ozellikler']);
	if (in_array($ozellik, $ozellikler)){ //bu rütbe bu yetkiye sahip
		return true;
	}else{ //degil
		return false;
	}
}

Bu fonksiyon ile kullanıcının rütbesini ve
yapacağı işlem veya gireceği bölgenin string tipinde bir
belirtecini alıp veritabanında bu rütbeye ait verileri çekiyoruz.
Bu rütbenin belirtilen yetkiye sahip olup olmadığını kontrol
ediyoruz. Yetkisi varsa ″true″, yoksa ″false″ değeri dönüyor
ve bu değere göre kullanıcı o işlemi yapabiliyor veya o bölgeye,
sayfaya girebiliyor.

Aşağıdaki fonksiyon ile kullanıcının isminin yanında yetkili olduğu ünvanı yazdırıyoruz.

function yetki_tag($rutbe){ //yetkili kişinin isminin yanında ünvanını belirtilen renk doğrultusunda göster
	$yetki_sorgu = query('SELECT SQL_CALC_FOUND_ROWS yetki_isim,yetki_renk FROM yetkiler WHERE ID=''.$rutbe.'' LIMIT 1');
	if (row3(query('SELECT FOUND_ROWS()'))[0]){
		$yetki = row($yetki_sorgu);
		return ''.$yetki['yetki_isim'].'';
	}
	return '';
}

index.php dosyası

“index.php” dosyasını oluşturuyoruz ve “ayarlar.php” dosyasını PHP require fonksiyonu ile sayfaya dahil ediyoruz. Bu sayfada kullanıcı oturum açtı ise yetkili paneli gösteriyoruz, oturum açmadı ise “membership.php” dosyasına ziyaretçiyi yönlendiriyoruz. Oturum açan kullanıcı yetkisine göre menüleri görebiliyor ve bu menülere tıklayarak o sayfaya erişebiliyor, o sayfadaki işlemleri yapabiliyor.



	
		
	
	
		
				

PHP Yetki Sistemi


Hoş geldin [ ]
Anasayfa
Makaleler
Yorumlar
Mailler
Yetki Ayarları
Üyeler
Çıkış Yap

Anasayfa

İlk açılan sayfa.

membership.php dosyası

Bu sayfada ise ziyaretçi giriş yapabilir veya kayıt olabilir. Giriş yapma yada kayıt olma işlemi başarılı olduğunda oturum açılır, session bilgileri kaydedilir ve kullanıcı anasayfaya yönlendirilir. Kullanıcı oturumu kapatmak isterse yine bu sayfaya yönlendirilir, oturum bilgileri silinir ve giriş sayfasına yönlendirilir. Hatalı girişlerde gerekli bilgilendirme mesajları kullanıcıya yansıtılır.


	
		
	
	
		 true,
								'kullanici_id' => $kullanici['ID'],
								'kullanici_isim' => $kullanici['kullanici_isim'],
								'kullanici_yetki' => $kullanici['kullanici_yetki_id']
							);
							session_olustur($session);
							echo '
Başarıyla giriş yapıldı. Yönlendiriliyorsunuz.
'; }else{ echo '
Böyle bir kullanıcı bulunmuyor
'; } }else{ echo '
Boş geçmeyin
'; } header('Refresh: 3; url=index.php'); }else if ($_GET['type'] == 'register'){ //kayit ol $kullanici_isim = $_POST['kisim']; if ($kullanici_adi && $kullanici_sifre && $kullanici_isim){ $kullanici = row3(query('SELECT ID FROM kullanicilar WHERE kullanici_adi=''.$kullanici_adi.'''))[0]; if (!$kullanici['ID']){ //bu kullanici sistemde kayitli değil ise kullanıcıyı olustur ve oturumu baslat $varsayilan_yetki = row3(query('SELECT ID FROM yetkiler WHERE yetki_varsayilan = 1'))[0]; query('INSERT INTO kullanicilar SET kullanici_isim = ''.$kullanici_isim.'', kullanici_sifre = ''.$kullanici_sifre.'', kullanici_adi = ''.$kullanici_adi.'', kullanici_yetki_id = ''.$varsayilan_yetki.'' '); if (affected_rows()){ $session = array( 'giris' => true, 'kullanici_id' => $kullanici_adi, 'kullanici_isim' => $kullanici_isim, 'kullanici_yetki' => $varsayilan_yetki ); session_olustur($session); echo '
Başarıyla üye olundu. Yönlendiriliyorsunuz.
'; }else{ echo '
Bir hata oluştu. Daha sonra tekrar deneyin.
'; } }else{ echo '
Böyle bir kullanıcı mevcut
'; } }else{ echo '
Boş geçmeyin
'; } header('Refresh: 3; url=index.php'); }else{ header("Location: index.php"); } } if ($_GET['type'] == 'login'){?>

Giriş Yap





Kayıt Ol

Kayıt Ol







Giriş Yap
Başarıyla çıkış yapıldı. Yönlendiriliyorsunuz.
'; header('Refresh: 3; url=index.php'); }else{ header("Location: index.php"); } } ?>

Kullanıcı giriş yapıp anasayfaya yönlendirildiğinde
kullanıcının yetkisine bağlı olarak farklı bir arayüz onu
karşılayacak. Kullanıcının sahip olduğu yetkilere göre menüler
farklılık gösterecek. İlk olarak yetki ayarlamalarını
sonrasında da üye düzenlemesini görelim.

yetki.php

Üyelik yetkisi bulunan kullanıcının girebileceği bu sayfada bütün yetkiler isim ve varsayılan durumu şeklinde listeleniyor. Kullanıcı istediği yetkiyi silebilir, düzenleyebilir veya yeni bir yetki ekleyebilir. Bir yetki varsayılan olarak seçilir ise üyelik işlemlerinde ziyaretçi üye olurken varsayılan olarak bu yetki atanacak.

Varsayılan olarak ayarlanmış yetki silinemez. Bu yetkiyi silebilmek için varsayılan durumunu başka bir yetkiye aktarmak gerekiyor. Varsayılan yetkisine sahip rütbeyi düzenlerken varsayılanlık durumu kaldırılamaz. Varsayılanlık durumu aktarım yapılarak değiştirilir. Yani varsayılan olmayan bir rütbeyi düzenlerken veya yeni bir rütbe eklerlen onu varsayılan yetki olarak atarız ve varsayılan yetki birinden diğerine aktarılmış olur. Böylelikle istenilen yetki silinebilir. Silinen yetkiye sahip üyelere otomatik varsayılan yetki atanır.

if (yetki_kontrol($_SESSION['kullanici_yetki'], 'uyelik')){
	if ($_GET['yetki_islem']){
		function rutbe_varmi($ozellik,$ozellik_dizi){
			$ozellikler = explode(',',$ozellik_dizi);
			if (in_array($ozellik, $ozellikler)){
				return true;
			}else{
				return false;
			}
		}
		$yetki_dizi = array( //sistemde kullanilacak yetkiler orn: yetki_kontrol($_SESSION['kullanici_yetki'], 'uyelik')
			'makale' => '1. Makaleler',
			'yorum' => '2. Yorumlar',
			'mail' => '3. Mailler',
			'uyelik' => '4. Üyelik/Yetki İşlemleri'
		);
		if ($_GET['yetki_islem'] == 'ekle'){
			$baslik = 'Yetki Ekle';
		}else{
			$baslik = 'Yetki Düzenle';
			$yetki_sorgu = row(query('SELECT * FROM yetkiler WHERE ID = '.$_GET['id'])); //duzenlenecek yetkinin bilgilerini getir
			$yetki_id = $yetki_sorgu['ID'];
			$yetki_isim = $yetki_sorgu['yetki_isim'];
			$yetki_renk = $yetki_sorgu['yetki_renk'];
			$yetki_varsayilan = $yetki_sorgu['yetki_varsayilan'];
			$yetki_ozellikler = $yetki_sorgu['yetki_ozellikler'];
		}
		if ($_POST){
			$yetki_isim = $_POST['yetki_isim'];
			$yetki_renk = $_POST['yetki_renk'];
			$yetki_varsayilan = $_POST['yetki_varsayilan']?1:0;
			$yetki_ozellikler = implode(',',$_POST['yetki_ozellikler_dizi']);
			if ($yetki_isim && $yetki_renk){
				/*
					varsayilan yetki aktarma usulüyle değiştirilir. varsayilan yetki turunde olmayan bir yetki duzenlendiginde veya
					yeni bir yetki eklendiginde varsayılan yetki turu bu duzenlenen yada eklenen yetkiye aktarılır
				*/
				$yetki_varsayilan__select_uygunlugu = 1;
				if ($yetki_varsayilan == 1 && $yetki_sorgu['yetki_varsayilan'] != 1){
					query('UPDATE yetkiler SET yetki_varsayilan = 0 WHERE yetki_varsayilan=1');
				}else if (!$yetki_varsayilan && $yetki_sorgu['yetki_varsayilan'] == 1){ //bu sayfada aktiflikten pasif hale getirildiyse
					$yetki_varsayilan__select_uygunlugu = 0;
				}
				if ($yetki_varsayilan__select_uygunlugu){
					if ($_GET['yetki_islem'] == 'ekle'){ //yetki ekle
						$sql = 'INSERT INTO yetkiler SET
						yetki_isim = ''.$yetki_isim.'',
						yetki_renk = ''.$yetki_renk.'',
						yetki_varsayilan = ''.$yetki_varsayilan.'',
						yetki_ozellikler = ''.$yetki_ozellikler.''
						';
					}else{ //yetki duzenle
						$sql = 'UPDATE yetkiler SET
						yetki_isim = ''.$yetki_isim.'',
						yetki_renk = ''.$yetki_renk.'',
						yetki_varsayilan = ''.$yetki_varsayilan.'',
						yetki_ozellikler = ''.$yetki_ozellikler.'' WHERE ID = ''.$yetki_id.''
						';
					}
					$sonuc = query($sql);
					if ($sonuc){ ?>
						
İşlem başarıyla gerçekleşti
Bir hata oluştu
Aktif iken pasif hale getirilerek değiştirilemez. Başka bir rütbede varsayılan değer değiştirilebilir. Böylelikle varsayılan rütbeye sahip kullanıcılarda sıkıntı çıkmamış olur ve devir teslim uygun olur

Yetki İsim

Yetki Renk


$yetki_ozellik){ if (rutbe_varmi($yetki_index,$yetki_ozellikler)){ ?>


Varsayılan Yetki: >
Varsayılan yetki, varsayılan yetkiye sahip olmayan bir yetki türünün eklenmesi veya düzenlenmesi ile aktarılır. Bu yetki türü varsayılan yetki ise buradan pasif hale getirilemez, aktarılarak varsayılan yetki değiştirilebilir. ">Sil
Yetki başarıyla silindi
Yetki silinemedi
Varsayılan yetkidir. Varsayilan yetkilikten çıkarıp tekrar deneyin.

Yetki Ayarları

Yetki Ekle
Yetki Varsayılan Durumu İşlem
">Sil ">Düzenle

uye.php

Uyelik yetkisine sahip kullanıcının giriş yapabileceği bu sayfa üzerinde kullanıcı kendisi hariç diğer üyeleri düzenleyebilir, yetki atayabilir, kullanıcıyı silebilir veya yeni bir kullanıcı ekleyebilir.

Kodlar aşağıdaki gibidir.

if (yetki_kontrol($_SESSION['kullanici_yetki'], 'uyelik')){
	if ($_GET['uye_islem']){
		if ($_GET['uye_islem'] == 'ekle'){
			$baslik = 'Üye Ekle';
		}else{
			$baslik = 'Üye Düzenle';
			$kullanici_sorgu = row(query('SELECT * FROM kullanicilar WHERE ID = '.$_GET['id']));
			$kullanici_id = $kullanici_sorgu['ID'];
			$kullanici_isim = $kullanici_sorgu['kullanici_isim'];
			$kullanici_sifre = $kullanici_sorgu['kullanici_sifre'];
			$kullanici_adi = $kullanici_sorgu['kullanici_adi'];
			$kullanici_yetki_id = $kullanici_sorgu['kullanici_yetki_id'];
		}
		if ($_POST){
			$kullanici_isim = $_POST['kullanici_isim'];
			$kullanici_sifre = $_POST['kullanici_sifre'];
			$kullanici_adi = $_POST['kullanici_adi'];
			$kullanici_yetki_id = $_POST['kullanici_yetki_id'];
			if ($kullanici_isim && $kullanici_sifre && $kullanici_yetki_id){
				if ($_GET['uye_islem'] == 'ekle'){
					$sql = 'INSERT INTO kullanicilar SET
					kullanici_isim = ''.$kullanici_isim.'',
					kullanici_sifre = ''.$kullanici_sifre.'',
					kullanici_adi = ''.$kullanici_adi.'',
					kullanici_yetki_id = ''.$kullanici_yetki_id.''
					';
				}else{ //duzenle
					$sql = 'UPDATE kullanicilar SET
					kullanici_isim = ''.$kullanici_isim.'',
					kullanici_sifre = ''.$kullanici_sifre.'',
					kullanici_adi = ''.$kullanici_adi.'',
					kullanici_yetki_id = ''.$kullanici_yetki_id.'' WHERE ID = ''.$kullanici_id.''
					';
				}
				$sonuc = query($sql);
				if ($sonuc){ ?>
					
İşlem başarıyla gerçekleşti
Bir hata oluştu

Kullanici İsim

Kullanici Şifre

Kullanici Adı

">Sil
Üye başarıyla silindi
Üye silinemedi
Kendinizi silemezsiniz.

Üye Ayarları

Üye Ekle
Üye İsim Rütbe İşlem
">Sil ">Düzenle

Style.css

PHP yetkilendirme sistemi örneğinde kullanılan stil kodları.

body{
	font-family:cursive
}
.container{
	width:950px;
	margin:auto
}
.moduller{
	width:300px; 
	padding:5px;
	border:1px solid #ccc;
	border-radius:10px;
	float:left
}
.moduller div{
	padding:5px 10px;
	background:#f1f1f1;
	margin:10px 5px;
	color:#333;
	border-radius: 5px;
}
.moduller a{
	color:#333;
	text-decoration:none
}
.k_style{
	margin:20px 0;
	font-size:18px;
	font-family:monospace
}
.k_style span{
	font-weight:bold
}
.page{
	width:600px;
	padding:10px;
	border:1px solid #ccc;
	border-radius:10px;
	float:right;
	font-size:20px;
	color:#444
}
h1{
	text-align:center;
	font-family:arial;
	margin:25px;
	color:#222
}
.page h1{
	margin: 0 0 10px 0;
	font-size: 24px;
}
table.yetkiler{
	width:100%;
	text-align:left;
	border:1px solid #eee;
	padding:5px
}
table.yetkiler tr{
	margin:15px;
}
table.yetkiler th{
	border-bottom: 1px solid #ddd;
	padding: 10px;
	margin-bottom: 15px;
	background: #f1f1f1;
}
table.yetkiler td{
	box-shadow: 0px 1px 1px 0px #dad8d8;
	margin: 15px;
	padding: 10px;
}
.sil{
	color:#f00
}
.silButon{
	color:#fff; background:#f00; padding:10px 0; width:100%; display:block; border-radius:5px; font-size:17px; text-align:center
}
.duzenle{
	color:#1f7704
}
.basarili_mesaj{
	background:#1f7704;
	color:#fff;
	font-weight:bold;
	border-radius: 10px;
	padding: 10px;
	text-align: center;
	margin: 10 5 15px;
}
.basarisiz_mesaj{
	background:#c50000;
	color:#fff;
	font-weight:bold;
	border-radius: 10px;
	padding: 10px;
	text-align: center;
	margin: 10 5 15px;
}
input[type=text], select{
	width:100%;
	padding: 15px;
	border:1px solid #ddd;
	outline:0
}
input[type=submit]{
	width:100%;
	margin:20px 0;
	padding:20px;
	border-radius:5px;
	background:#005aff;
	color:#fff;
	border:0;
	cursor:pointer
}
.bilgi_mesaj{
	font-size:17px;
	color:#098c07
}

PHP kullanıcı yetkilendirme sistemi konulu yazım bu kadar. Bu yazıda anlatılan örnek uygulamayı PHPYetkiSistemi adlı dosyayı indirerek edinebilirsiniz.

Yorum Yap
0 Yorum yapan
Logo

Yeni Nesil Web Blog Sitesi!
İhtiyacınız olan bilgilere ulaşabileceğiniz, yeni edindiğiniz bu bilgileri nerede ve nasıl kullanacağınız hakkında bilgi veren yeni nesil web blog sitesidir.
Web Blog © Copyright 2022

Mekait izmir web tasarım

Ülkemizde son zamanlarda İzmirde, web sitesi tasarlama bilgisi olmayan kurum ya da kişiler müşterinin kurumsallığını hiçe sayarak hazır çalıntı tasarım ve sistemler ile kısa sürede web sitesi oluşturmakta ve haksız kazanç elde etmektedir. Bu yapılar müşterilerin ileride yüklü miktarda maddi kayıplar vermesine yol açmaktadır. Özgün tasarımlar ve en güncel standartlarla yapılandırdığımız web sitenizi kurumsal kimliğinizle bir bütün olarak düşünüyoruz. Web Tasarım İzmir Ajansı olarak, Müşteri beklentilerini analiz ediyor, kurumsal algısına örtüşen, firma hedefleri doğrultusunda bir web site hazırlıyoruz. Tasarım aşamasında soru işaretleri kalmayana dek müşteri isteklerinin sağlanması gerektiğine inanıyoruz.
Sizde kurumsal bir web tasarım hizmeti almak istiyorsanız İzmir Web Tasarım ile tanışma zamanınız gelmiş demektir.