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(
umarım :p) , hani birileride sabite alırsa tadından yenmez :).
- 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 ?
Form'dan gelen veriyi tescillemeyi unutmayın.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 'un kapalı olduğu sunucularda
-ki genelde güvenlik nedeniyle kapalıdır-.
Çözüm : Bu tür verileri aşağıdaki gibi alabilirsiniz.
PHP- Kodu:
$ahmet = $_POST['ahmet']; // FORM post methodu ile veri yolluyorsa
// $ahmet = $_GET['ahmet']; // GET methodu ile yolluyorsa
Bu tür sorunların önüne geçmek için kullanabileceğinz global diziler:
$_SERVER[]: sunucu degiskenleri , PHP_SELF ,REMOTE_ADDR gibi.
$_COOKIE[]: çerez değişkenlerinin saklandıgı dizi
$_SESSION[]: oturum değişkenlerinin saklandığı dizi
$_FILES[]: Upload değişkenlerinins saklandığı dizi
$_REQUEST[]: GET , POST , COOKIE değişkenlerini içine alan dizi
Supergloballer hakkında daha fazla ayrıntılı bilgiye
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ulaşabilirsiniz.
- Cannot modify header information - headers already sent hatası alıyorum ? Nasıl düzeltirim ?
Muhtemelen sayfaya HTML çıktısı yapıldıktan sonra header() kullanmaya çalıştınız.Sayfanın başına
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...], sonuna
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ekleyin.
- Enter tuşuna basıldığında otomatik olarak alt satıra geçilmesini istiyorum
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] fonksiyonunu kullanın.
- Değişkeni ekrana basarken değeri çıkmıyor , $degiskenadi şeklinde çıkıyor.
Muhtemelen tek tırnak içinde ekrana basmak istediniz.Örneği inceleyin.
PHP- Kodu:
$degisken = 'ceviz.net';
echo"$degisken"; // cikti ceviz.net
echo''.$degisken.''; // cikti ceviz.net
echo $degisken; // cikti ceviz.net
echo '$degisken'; // cikti $degisken
- Adres satırından gelen veriyi integer veritipine çevirmek istiyorum ?
Eğer veri numerik degilse 0'a eşitlenir.
PHP- Kodu:
$id = int ($_GET['id']);
// veya
$id = intval($_GET['id'];
- Dizindeki dosyaların tümünü array'e atmak istiyorum ?
PHP5 kullanıyorsanız
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kullanın , PHP4 için alternatifi aşağıda.
PHP- Kodu:
$dh = opendir('/home/emre');
while (false !== ($filename = readdir($dh))) {
$dizi[] = $filename;
}
- echo'mu kullanmalıyım yoksa print'mi ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- Değişken'den gelen HTML karakterlerini silmek istiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ,
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kullanın.strip_tags ile belirttiğiniz html etiketlerinin kullanılabilmesinide sağlayabilirsiniz.
- E-mail değişkenime mantıksal bir e-mail girilmiş mi kontrol etmek istiyorum ?
PHP- Kodu:
function mail_kontrol($email) {
if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $email))
die ("E-Mail Adresiniz Geçersiz");
}
- Değişkeni belli bir karakterden sonra bölmek istiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kullanın.
- Input kutusu içinde gösterdiğim kaydın sadece ilk kelimesi gözüküyor ?
PHP- Kodu:
echo"<input type=text name=$degisken>"; # hatali kullanim
echo"<input type=text name='$degisken"; # dogru
- Belli bir karakterden sonra otomatik olarak <br /> yapılmasını istiyorum.Sayfa uzadıkça uzuyor yahu.
PHP- Kodu:
function yaziyi_bol($yazi, $uzunluk) {
if($yazi && strlen($yazi)>$uzunluk) {
$yazi=preg_replace("/([^\n\r -]{".$uzunluk."})/i"," \\1\n<br />",$yazi);
return $yazi;
}
else return $yazi;
}
//Örnek kullanım
echo yaziyi_bol($yazi,$uzunluk);
- Rasgele şifre üretmek istiyorum
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- str_replace'in buyuk kucuk harf ayrımı yapmasını istemiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- URL üzerinden veri yolluyorum ama diğer sadece ilk kelimesini alabiliyorum?
urlencode() kullanabilirsiniz ;
PHP- Kodu:
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
- Fonksiyon içinde değişken kullanamıyorum !
2 yolu var , fonksiyona parametre olarak tanımlamak.
PHP- Kodu:
function foo($degisken1,degisken2,...) {
//...
}
veya global olarak tanımlamak
PHP- Kodu:
function bar($degisken) {
global $degisken1,$degisken2;
//..
}
- MySQL sorgusu yapmak istediğimde Invalid Result Resource hatası alıyorum ? Ne anlama geliyor ?
Bu hata herhangi bir nedenden dolayı yaptığınız sorguda oluşan bir hatayı gösterir.Ayrıntılı hata mesajlari alabilmek için
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kullanabilirsiniz.
PHP- Kodu:
mysql_query("SELECT foo FROM bar where id='$id'") or die(mysql_error());
gibi..
- Veritabanina yazarken ' karakterleri \\\ haline geliyor.Niye bu kafar çok \ var ?
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- Kodu:
if (!get_magic_quotes_gpc()) { $degisken = addslashes($degisken); }
- Dosya içeriğini array'e atmak istiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- Tasarımla kodlamayı ayırmak istiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- Bazı fonksiyonlardan dönen hataların gözardı edilmesini istiyorum?
Fonksiyonu kullanirken başına @ karakterini ekleyin.
PHP- Kodu:
@mysql_connect('localhost','root','');
gibi..
- MySQL'den çektiğim verileri yanyana ve altalta gostermek istiyorum ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- Form doldurmadan PHP'den doğru POST verisi yollamak istiyorum ?
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- Kodu:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #007700">);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
curl_exec ($ch);
curl_close ($ch);
?>
- header() fonksiyonu belli bir saniye bekledikten sonra yönlendirsin?
[php]header("Refresh: 0;
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]]
- Sayfam çok geç açılıyor , nasıl optimize edebilirim ?
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]- HTML icerikli mail yollamak istiyorum?
PHP- Kodu:
# 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('
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
','turker','
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
','Site Hatası','Ana sayfanın sağ alt köşesinde bir kıl var. Ne o?');