Php Kodu Yazarken Sıkça Sorulan Sorular , Rastlanan Hatalar Ve Çözümleri Bu konuda , PHP öğrenirken sıkça sorulan soruları ve cevaplarını yazalım , böylece hemen hemen her 2 haftada bir sorulan klon sorulardan kurtulabiliriz belki([I]umarım [/I]:p) , hani birileride sabite alırsa tadından yenmez :).
[LIST]
[B]Neden FORM bilgilerim gözükmüyor ? Örneğin , form'da name=ahmet şeklinde bir input kutusu hazırlayıp diğer sayfada $ahmet şeklinde almaya çalıştığımda hiç birşey ekrana basılmıyor ? [/B]
[/LIST]
Form'dan gelen veriyi tescillemeyi unutmayın.[url=http://php.net/register_globals]register_globals 'un kapalı olduğu sunucularda [I]-ki genelde güvenlik nedeniyle kapalıdır-[/I].
[B]Çözüm : [/B] Bu tür verileri aşağıdaki gibi alabilirsiniz.
[php]
$ahmet = $_POST['ahmet']; // FORM post methodu ile veri yolluyorsa
// $ahmet = $_GET['ahmet']; // GET methodu ile yolluyorsa
[/php]
Bu tür sorunların önüne geçmek için kullanabileceğinz global diziler:
[I]$_SERVER[]:[/I] sunucu degiskenleri , PHP_SELF ,REMOTE_ADDR gibi.
[I]$_COOKIE[]:[/I] çerez değişkenlerinin saklandıgı dizi
[I]$_SESSION[]:[/I] oturum değişkenlerinin saklandığı dizi
[I]$_FILES[]:[/I] Upload değişkenlerinins saklandığı dizi
[I]$_REQUEST[]:[/I] GET , POST , COOKIE değişkenlerini içine alan dizi
Supergloballer hakkında daha fazla ayrıntılı bilgiye [url=http://tr2.php.net/en/language.variables.predefined]buradan ulaşabilirsiniz.
[LIST]
[B]Cannot modify header information - headers already sent hatası alıyorum[/B] ? Nasıl düzeltirim ?
[/LIST]
Muhtemelen sayfaya HTML çıktısı yapıldıktan sonra header() kullanmaya çalıştınız.Sayfanın başına [url=http://www.php.net/ob_start]ob_start();, sonuna [url=http://www.php.net/ob_end_flush]ob_end_flush() ekleyin.
[LIST]
[B]Enter tuşuna basıldığında otomatik olarak alt satıra geçilmesini istiyorum
[/LIST][/B]
[url=http://php.net/nl2br]nl2br fonksiyonunu kullanın.
[LIST]
[B]Değişkeni ekrana basarken değeri çıkmıyor , $degiskenadi şeklinde çıkıyor.[/LIST][/B]
Muhtemelen tek tırnak içinde ekrana basmak istediniz.Örneği inceleyin.
[php]
$degisken = 'ceviz.net';
echo"$degisken"; // cikti ceviz.net
echo''.$degisken.''; // cikti ceviz.net
echo $degisken; // cikti ceviz.net
echo '$degisken'; // cikti $degisken[/php]
[LIST]
[B]Adres satırından gelen veriyi integer veritipine çevirmek istiyorum ?[/LIST][/B]
Eğer veri numerik degilse 0'a eşitlenir.
[php]
$id = int ($_GET['id']);
// veya
$id = intval($_GET['id'];[/php]
[LIST]
[B]Dizindeki dosyaların tümünü array'e atmak istiyorum ?[/LIST][/B]
PHP5 kullanıyorsanız [url=http://www.php.net/scandir]scandir kullanın , PHP4 için alternatifi aşağıda.
[php]$dh = opendir('/home/emre');
while (false !== ($filename = readdir($dh))) {
$dizi[] = $filename;
} [/php]
[LIST]
[B]echo'mu kullanmalıyım yoksa print'mi ?[/LIST][/B]
[url]http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
[LIST]
[B]Değişken'den gelen HTML karakterlerini silmek istiyorum ?[/LIST][/B]
[url=http://www.php.net/strip_tags]strip_tags , [url=http://www.php.net/htmlspecialchars]htmlspecialchars kullanın.strip_tags ile belirttiğiniz html etiketlerinin kullanılabilmesinide sağlayabilirsiniz.
[LIST]
[B]E-mail değişkenime mantıksal bir e-mail girilmiş mi kontrol etmek istiyorum ?[/LIST][/B]
[php]function mail_kontrol($email) {
if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $email))
die ("E-Mail Adresiniz Geçersiz");
} [/php]
[LIST]
[B]Değişkeni belli bir karakterden sonra bölmek istiyorum ?[/LIST][/B]
[url=http://www.php.net/substr]substr kullanın.
[LIST]
[LIST]
[B]Input kutusu içinde gösterdiğim kaydın sadece ilk kelimesi gözüküyor ?[/LIST][/B]
[php]
echo"input type=text name=$degisken"; # hatali kullanim
echo"input type=text name='$degisken"; # dogru
[/php]
[B]Belli bir karakterden sonra otomatik olarak br / yapılmasını istiyorum.Sayfa uzadıkça uzuyor yahu.[/LIST][/B]
[php]function yaziyi_bol($yazi, $uzunluk) {
if($yazi && strlen($yazi)$uzunluk) {
$yazi=preg_replace("/([^\n\r -]{".$uzunluk."})/i"," \\1\nbr /",$yazi);
return $yazi;
}
else return $yazi;
}
//Örnek kullanım
echo yaziyi_bol($yazi,$uzunluk);
[/php]
[LIST]
[B]Rasgele şifre üretmek istiyorum[/LIST][/B]
[url]http://forum.ceviz.net/showpost.php?p=95003&postcount=11
[LIST]
[B]str_replace'in buyuk kucuk harf ayrımı yapmasını istemiyorum ?[/LIST][/B]
[url=http://www.php.net/manual/en/function.eregi-replace.php]eregi_replace
[LIST]
[B]URL üzerinden veri yolluyorum ama diğer sadece ilk kelimesini alabiliyorum?[/LIST][/B]
urlencode() kullanabilirsiniz ;
[php]
echo 'a href="mycgi?foo=', urlencode($userinput), '"';
[/php]
[LIST]
[B]Fonksiyon içinde değişken kullanamıyorum ![/LIST][/B]
2 yolu var , fonksiyona parametre olarak tanımlamak.
[php]
function foo($degisken1,degisken2,...) {
//...
} [/php]
veya global olarak tanımlamak
[php]
function bar($degisken) {
global $degisken1,$degisken2;
//..
}[/php]
[LIST]
[B]MySQL sorgusu yapmak istediğimde Invalid Result Resource hatası alıyorum ? Ne anlama geliyor ?[/LIST][/B]
Bu hata herhangi bir nedenden dolayı yaptığınız sorguda oluşan bir hatayı gösterir.Ayrıntılı hata mesajlari alabilmek için [url=http://www.php.net/mysql_error]mysql_error(); kullanabilirsiniz.
[php]
mysql_query("SELECT foo FROM bar where id='$id'") or die(mysql_error());[/php] gibi..
[LIST]
[B]Veritabanina yazarken ' karakterleri \\\ haline geliyor.Niye bu kafar çok \ var ?[/LIST][/B]
Eğer magic_quotes açıksa veriler sorguya sokulmadan önce otomatik olarak slash eklenir birde adslashes ile eklerseniz fazladan slash bolluğu yapmış olursunuz :).Şöyle bir kontrol yapabilirsiniz.
[php]if (!get_magic_quotes_gpc()) { $degisken = addslashes($degisken); } [/php]
[LIST]
[B]Dosya içeriğini array'e atmak istiyorum ?[/LIST][/B]
[url=http://www.php.net/file]file()
[LIST]
[B]Tasarımla kodlamayı ayırmak istiyorum ?[/LIST][/B]
[url]http://forum.ceviz.net/showpost.php?p=174720&postcount=61
[LIST]
[B]Bazı fonksiyonlardan dönen hataların gözardı edilmesini istiyorum?[/LIST][/B]
Fonksiyonu kullanirken başına @ karakterini ekleyin.
[php]@mysql_connect('localhost','root','');[/php] gibi..
[LIST]
[B]MySQL'den çektiğim verileri yanyana ve altalta gostermek istiyorum ? [/LIST][/B]
[url]http://forum.ceviz.net/showthread.php?t=23244
[LIST]
[B]Form doldurmadan PHP'den doğru POST verisi yollamak istiyorum ?[/LIST][/B]
cURL veya socket kütüphaneleriye yapmak mümkün , ikisiylede ilgili döküman dökümanlar bölümünde mevcut , yada basitçe cURL ile POST verisi yollamak.
[php]?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
curl_exec ($ch);
curl_close ($ch);
?[/php]
[LIST]
[B]header() fonksiyonu belli bir saniye bekledikten sonra yönlendirsin?[/LIST][/B]
[php]header("Refresh: 0;
Link
[LIST]
[B]Sayfam çok geç açılıyor , nasıl optimize edebilirim ?[/LIST][/B]
[url]http://forum.ceviz.net/showthread.php?t=23178
[LIST]
[B]HTML icerikli mail yollamak istiyorum?[/LIST][/B]
[php]
# turker
function
postala($gidecekMail,$gonderenAd,$gonderenMail,$konu,$mesaj) {
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-9\n";
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Sender: PHP\n";
$headers .= "From: $gonderenAd$gonderenMail\n";
$headers .= "Reply-To: $gonderenAd$gonderenMail\n";
$headers .= "Return-Path: $gonderenAd$gonderenMail\n";
@mail($gidecekMail,$konu,$mesaj,$headers);
}
# kullanim
postala('webmaster@ceviz.net','turker','turker@eggdropturk.com','Site Hatası','Ana sayfanın sağ alt köşesinde bir kıl var. Ne o?');
[/php]
Yazının Devamı İçin Tıklayın
Konuyu Yollayan: YALNIZLIK
Okunma Sayısı: 253
Yorum Sayısı: 18
Eklenme Tarihi: 06/02/2008
Kategorisi: Php Scriptler
