PHP Notice: Undefined index Hatası ve Çözüm Yolu

Merhaba,

Bugün php de birşeyler uğraşırken sürekli kodlarımın, yaptığımın çalışmasına rağmen “PHP Notice: Undefined index ….” şeklinde bir hata almaktaydım. Bende çözüm yolunu araştırdım ve buldum oldukça basit.

Öncelikle hatanın sebebini açıklayayım. Aslında bu bir hata değildir sadece bir uyarıdır. Yani yazdığınız kod çalışıyor fakat sisteminiz size uyarı vermektedir. Tanımsız bir değişken çekmeye çalışıyorsunuz anlamına gelmektedir. Bu uyarının çözümünü örneklerle açıklayarak yapalım;

<?php
$a=1;
if($a==1)
$q="deneme";
else
$z="denememe";
echo $q.$z;
?>

Burada $q’ya “deneme” değerini atayacaktır, koşulu sağlamadığı için $z değişkenine hiç bir değer atmayacaktır. Echo ile $z’yi yazdırmaya çalıştığımızda bize “PHP Notice: Undefined index z ………. ” şeklinde uyarı verecek ve ekrana deneme yazacaktır.
Bunu engellemenin iki yolu var birinci yol bu hataya çözüm olabilecek fakat günü kurtarmaya yönelik olan bir yoldur. İkinci yol ise daha sağlam olanıdır.

1- Sayfanın başına şu satırları ilave etmemiz gerek:

<?php
error_reporting(E_ALL ^ E_NOTICE);
ini_set('error_reporting', E_ALL ^ E_NOTICE);
?>

2- Değişkeni yazdırmaya çalışmadan önce isset ile kontrol ettirmek:

<?php
$a=1;
if($a==1)
$q="deneme";
else
$z="denememe";
if(isset($q)
echo $q;
if(isset($z))
echo $z;
?>

Yani önce değişkenin tanımlanıp tanımlanmadığını kontrol edip, sonra yazdırıyoruz.

Kolay Gelsin…

Diğer Benzer Yazılar:


Php ile Rastgele Kombinasyon Üretme ve Uniqeu Id Üretme

Sizde youtube sitesinde olduğu gibi unique id üretebilirsiniz. (Örnek: http://www.youtube.com/watch?v=5vBGOrI6yBk&feature=plcp kalın olarak belirtilen kısım)

Bunu yaparken tabikide uzunluğunu belirtmek zorundasınız. Link kısaltma servislerinde görüldüğü gibi kısa şekilde linkler oluştrabilirsiniz sitelerinizde. (Örnek: yazılar, profil sayfaları vs..)

Kod kısmı:

function id_uret($uzunluk) {
 $randuretid= crypt(uniqid(rand(),1));
 $randuretid= strip_tags(stripslashes($rnd_id));
 $randuretid= str_replace(".","",$randuretid);
 $randuretid= strrev(str_replace("/","",$randuretid));
 $randuretid= substr($randuretid,0,$uzunluk);
 return $randuretid; }

Kullanımı:

echo id_uret(12);

Yukarıda id_uret() fonksiyonundaki 12 üretilen unique verinin karakter uzunluğunu belirtmektedir, siz kaç karakterli olmasını isterseniz onu yazabilirsiniz.

Diğer Benzer Yazılar:


Html, Php ve Mysql’de Türkçe Karekteri Sorunu Çözümü

Herkesinde bildiği gibi html, php ve mysql bağlantılı çalışmalar yaptığımız hemen hemen türkçe karakter sorunuyla birçok kişi karşılaşmıştır. Aslında bunun çözümü gayet basit yapmanız gerekenleri aşağıda yazacağım.

Html sayfasında <head> etiketi arasına sayfanın desteklediği dil kodunu yazmalısınız. Eğer kodu <head> etiketi arasına yazarsanız html sayfanızdaki karakter sorunları çözülmüş olacaktır.

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-9″ />

</head>

Bir de html sorunun bir benzeride php web sayfaları için eklemek gerekecektir. Bunun içinde aynı şekilde <head> etiketi arasına aşağıdaki kodu ekleyip sorunu çözebilirsiniz.

<head>

header(“Content-Type: text/html; charset=ISO-8859-9″);

</head>

Aşağıdaki yazacağım kod ile de veri tabanı bağlantısı yaptığınızda, veri tabanından çektiğimiz bilgileri türkçe karakter sorununa çözüm olacaktır.

$dizin=localhost; // (örn : localhost)
 $kullanici=root; // (örn : root)
 $sifre=sifre; // (örn : sifre)
 $vt=veritabani; // (örn : defter)
$baglanti=mysql_connect ($dizin,$kullanici,$sifre) or die (“Hata”);
 $veritabani=mysql_select_db($vt) or die (“Hata”);
 mysql_query(“SET NAMES ‘latin5′”);
 mysql_query(“SET CHARACTER SET latin5″);
 mysql_query(“SET COLLATION_CONNECTION = ‘latin5_turkish_ci’”);

Bir de son olarak php sayfasından formdan gelen verileri türkçe karakter sorunu yaşamamak için php de bulunan str_replace fonksiyonunu kullanarak halledebilirsiniz. Formdan gelen mesaj değişkeninin içerisinde bulunan türkçe karakterler düzeltilir. Bunun için aşağıdaki kodu kullanabilirsiniz.

$mesaj = $_POST['mesaj'];

$tr = array(‘Ç’, ‘ç’, ‘Ğ’, ‘ğ’, ‘ı’, ‘İ’, ‘Ö’, ‘ö’, ‘Ş’, ‘ş’, ‘Ü’, ‘ü’);

$kod = array(‘& Ccedil;’, ‘& ccedil;’, ‘& #286;’, ‘& #287;’, ‘& #305;’, ‘& #304;’, ‘& Ouml;’, ‘& ouml;’, ‘& #350;’, ‘& #351;’, ‘& Uuml;’, ‘& uuml;’);

$veri = str_replace($tr, $kod, $mesaj);

Diğer Benzer Yazılar:


Php ile Tc Kimlik Numarası Kontrolü

<?php
 function tckimlik($tckimlik){
 $olmaz=array('11111111110','22222222220','33333333330','44444444440','55555555550','66666666660','7777777770','88888888880','99999999990');
 if($tckimlik[0]==0 or !ctype_digit($tckimlik) or strlen($tckimlik)!=11){ return false;  }
 else{
 for($a=0;$a<9;$a=$a+2){ $ilkt=$ilkt+$tckimlik[$a]; }
 for($a=1;$a<9;$a=$a+2){ $sont=$sont+$tckimlik[$a]; }
 for($a=0;$a<10;$a=$a+1){ $tumt=$tumt+$tckimlik[$a]; }
 if(($ilkt*7-$sont)%10!=$tckimlik[9] or $tumt%10!=$tckimlik[10]){ return false; }
 else{
 foreach($olmaz as $olurmu){ if($tckimlik==$olurmu){ return false; } }
 return true;
 }
 }
 }
 if(tckimlik('11111111110')){ echo 'Tc Kimlik Numarası doğru!'; } else { echo 'Lütfen geçerli bir Tc Kimlik Numarası giriniz...'; }

?>

Diğer Benzer Yazılar:


Php ile Şifreleme Yöntemi

<?php
 // kullanici listesi

$kul[0]['username']="ali";
 $kul[0]['password']="1234";

$kul[1]['username']="veli";
 $kul[1]['password']="4321";

// dogrulama

function authenticate()
 {
 header( 'www-authenticate: basic realm="private"' );
 header( 'http/1.0 401 unauthorized' );
 echo 'authorization required.';
 exit;
 }

if (!isset($_server['php_auth_user']) || !isset($_server['php_auth_pw'])) { authenticate(); } else
 {
 for($i=0;$i<count($kul);$i++) { if($_server['php_auth_user']==$kul[$i]['username'] && $_server['php_auth_pw']==$kul[$i]['password']){$auth=true;}}
 if($auth !=true) {authenticate();}
 }
 ?>

Diğer Benzer Yazılar:


Php ile Sistem Tarih ve Saatini Yazdırmak

<?php

$tarih = date("d.m.Y"); // Geçerli sistem tarihini almak için

$saat = date("H:i:s"); // Geçerli sistem saatini almak için

echo "Tarih : ".$tarih."<br>";

echo "Saat  : ".$saat;

?>

Diğer Benzer Yazılar: