- hata mesajlarının görüntülenmemsi için ne yapmamız gerekiyor?
PHP Kodu:error_reporting(0);
Edıtorun Notu: Konuyu daha rahat ızlenebılmesı ıcın uste tasıdım. Eger sızde bu konuya katkıda bulunabılecegınızı dusunuyorsanız Yns'ın belırledıgı formatta mesajlar gonderebılırsınız..
Bunun dısında kalan seyler ıcın (soru, gorus vs.) yenı bı konu acmanız yerınde olur.
----------------------------------
Araştırdım ceviz'de böyle bir konu yok , aslında döküman şeklinde yazacaktım ama herkes birşeyler ekler konu daha güzel olur diye düşündüm.
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) , 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.register_globals 'un kapalı olduğu sunucularda -ki genelde güvenlik nedeniyle kapalıdır-.
Çözüm : Bu tür verileri aşağıdaki gibi alabilirsiniz.
Bu tür sorunların önüne geçmek için kullanabileceğinz global diziler:PHP Kodu:$ahmet = $_POST['ahmet']; // FORM post methodu ile veri yolluyorsa
// $ahmet = $_GET['ahmet']; // GET methodu ile yolluyorsa
$_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 buradan 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 ob_start();, sonuna ob_end_flush() ekleyin.
- Enter tuşuna basıldığında otomatik olarak alt satıra geçilmesini istiyorum
nl2br 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 scandir 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 ?
http://www.faqts.com/knowledge_base/...l/aid/1/fid/40
- Değişken'den gelen HTML karakterlerini silmek istiyorum ?
strip_tags , htmlspecialchars 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 ?
substr 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
http://forum.ceviz.net/showpost.php?...3&postcount=11
- str_replace'in buyuk kucuk harf ayrımı yapmasını istemiyorum ?
eregi_replace
- 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.
veya global olarak tanımlamakPHP Kodu:function foo($degisken1,degisken2,...) {
//...
}
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 mysql_error(); kullanabilirsiniz.
gibi..PHP Kodu:mysql_query("SELECT foo FROM bar where id='$id'") or die(mysql_error());
- 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 ?
file()
- Tasarımla kodlamayı ayırmak istiyorum ?
http://forum.ceviz.net/showpost.php?...0&postcount=61
- Bazı fonksiyonlardan dönen hataların gözardı edilmesini istiyorum?
Fonksiyonu kullanirken başına @ karakterini ekleyin.
gibi..PHP Kodu:@mysql_connect('localhost','root','');
- MySQL'den çektiğim verileri yanyana ve altalta gostermek istiyorum ?
http://forum.ceviz.net/showthread.php?t=23244 (düşey ve yatay sıralama)
- 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,"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);
?>
- header() fonksiyonu belli bir saniye bekledikten sonra yönlendirsin?
PHP Kodu:header("Refresh: 0; http://www.php.net");
- Sayfam çok geç açılıyor , nasıl optimize edebilirim ?
http://forum.ceviz.net/showthread.php?t=23178 (200+ online kaldırabilicek kodlar yazabilmek)
- 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('webmaster@ceviz.net','turker','turker@eggdropturk.com','Site Hatası','Ana sayfanın sağ alt köşesinde bir kıl var. Ne o?');
Enson 16/10/2005 13:27 tarihinde HunTER tarafından düzenlenmiştir.
- hata mesajlarının görüntülenmemsi için ne yapmamız gerekiyor?
PHP Kodu:error_reporting(0);
Enson 16/10/2005 13:29 tarihinde HunTER tarafından düzenlenmiştir.
- Nasil moduler sayfalar yapabilirim ? index.php?islem=anasayfa gibi
Birkaç yol mevcut , en kısa ve güvenli yöntemi ; index.php?sayfa=dosyalar
sadece query_stringte kullanabilirsiniz.PHP Kodu:$sayfalar = array("index","dosyalar","linkler","calismalar");
if(!in_array("$_GET[sayfa]",$sayfalar) || empty($sayfa)) {
die("boyle bir sayfa yok..");
} else {
include("".$sayfa.".php");
}
?>
Ornek URI: index.php?uyelik
PHP Kodu:$uzanti = $_SERVER['QUERY_STRING'];
if($uzanti =='uyelik') include('uyelik.php');
//...
get_meta_tags.
- Kolayca bir sayfanın meta tag'lerini almak istiyorum ?
- Tarayıcı diline göre yönlendirme yapmak istiyorum ?
PHP Kodu:<?
if (getenv("HTTP_ACCEPT_LANGUAGE") == "tr") {
header("Location:index_tr.php"); //
} else {
header("Location:index_en.php");
}
?>Ek header yollayın ;
- Yolladığım mailin okunup okunmadığını öğrenmek istiyorum
veya yolladığınız mail içinde gizli bir iframe verin.PHP Kodu:$headers .= "Disposition-Notification-To: Your Name<you@you.com>\n";
logger.phpPHP Kodu:iframe name="control" src="http://www.yoursite.com/logger.php?process=log&mail=$mail" style="display:none"></iframe>
PHP Kodu:<?
if($_GET['process'] =="log") {
$mail = $_GET['mail'];
$time = date("d:m:y");
$fp = fopen("log.txt","w+");
fwrite($fp,"$mail - read the mail | time : $time \n");
fclose($fp);
}
?>base64_encode,base64_decode
- Geri dönüşlü şifreleme yapmak istiyorum ?
· Mod-Rewrite ile ana dizine rewrite yapıyorum klasörlerim gözükmüyor?
Php veya perl ile otomatiğe bağladığınız olaylarda, .htaccess 'e (veya serverınızda adı herneyse) aşağıdaki tipte durumlar vermek sizin için sorun yaratır:
RewriteCond %{REQUEST_URI} \/(.*)\/$
RewriteRule ^([A-Za-z0-9\-]+)\/$ index.php?sayfa=$1 [T=application/x-httpd-php,L]
Bu tip bir kod ile klasörlerinizde gözükmez olacaktır. yapmanız gereken basit bir çözüm.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9\-]+)\/$ index.php?sayfa=$1 [T=application/x-httpd-php,L]
rewrite cond 'un özelliklerinden biri olan !-d ile bunu yapabiliriz. bu ek klasörün var olup olmadığını kontrol ediyor. yoksa olması içinse -!d koyuyoruz.
Not: bir önceki postta mantık hatası yapmışım. SCRIPT_NAME ile REQUEST_URI klasör çağırdığınızda birbirine eşit olamaz zaten. biri /klasor/index.php verirken diğeri /klasor/ verecektir. şartlar ne olursa olsun. bu hata için özür dilerim...
Enson 10/06/2006 00:23 tarihinde turker tarafından düzenlenmiştir.
Msnden ve özel mesaj ile lütfen yardım istemeyin...
· Döngü ve koşul kullanımında kodlarım karışık ve karman çorman oluyor koşulları ve döngüleri karıştırıyorum...
Yeni başlayanların özellikle sorunu olan {} süslü parantez kullanımı bütün döngü ve koşullarda kullanılabiliyor. Fakat özellikle yeni başlayanlar için (ya da zaman zaman dikkatsiz kodlama yaptığımızda) neyi nerede kapattıp açtığımızı commentlerle anlamak yerine bir başka method olan kolon yazımını (colon syntax) kullanabiliriz. Aşağıya bir kaç örnek verelim;
for için;
while için;PHP Kodu:<?php
for ($m=0; $m < 10; $m++):
print $m;
//diğer işlemler
endfor;
?>
switch için:PHP Kodu:<?php
$i = 0;
while ($i < 10):
print $i;
//diğer işlemler
$i++;
endwhile;
?>
foreach için;PHP Kodu:<?php
switch ($r):
case 0:
echo "koşul 0";
break;
case 1:
echo "koşul 1";
break;
case 2:
echo "koşul 2";
break;
default:
echo "koşul belirtilmemiş";
endswitch;
?>
ve if için;PHP Kodu:<?php
$aile = array("anne","baba","dede");
foreach ($aile as $girdi):
echo "$girdi<br>";
endforeach;
?>
Böylece döngülere de şöyle bir göz atmış oldukPHP Kodu:<?php
$cocuk_sayisi = $_POST["cocuk"];
if ($cocuk_sayisi == 0):
echo "En kısa zamanda çocuk yapmalısınız...";
elseif ($cocuk_sayisi < 4 and $cocuk_sayisi > 0):
echo "Çocuk sayınız normal seviyede...";
else:
echo "Sanırım doğum kontrolünden haberiniz yoktu :)";
endif;
?>
Diğer kullanımı karışık bulanlara böyle bir alternatif kullanım var. Öyle değilse bile bilmiyorsanız aklınızın bir köşesinde bulunsun![]()
Msnden ve özel mesaj ile lütfen yardım istemeyin...
textarea daki enter tu$unun bir alt satıra direk geçmesi için nl2br fonksiyonu kullanılır evet ama farklı bir çözümde bunu yapmak isteyenler için
şeklinde de hallolmaktadır.PHP Kodu:$mesaj=$_POST['mesaj']; //form dan gelen textarea name'i
$mesaj=preg_replace("<","<",$mesaj);
$mesaj=preg_replace(">",">",$mesaj);
$mesaj=preg_replace("\n","<br>",$mesaj);
白石美帆 おっぱいチラ
register_globals = On
olduğunda şunu farkettim ki eğer session 'a
$_SESSION["ad"] = "vs";
gibi bir şey girdiğinizde daha sonra
$ad = "vs";
yazarsanız $_SESSION["ad"] $ad değişkenine dönüyor ve bir sonraki yenilemede gözükürken ikinci yenilemede gözükmüyor, büyük ihtimal bir bug 'dır (denediğim php ver. 4.3.10) belki de böyle bir özelliktir ama başınıza gelirse şaşırmayın diye yazıyorum![]()
Msnden ve özel mesaj ile lütfen yardım istemeyin...
sıkça yapılan bir yazım hatası bir dizinin indeksini sabit gibi vermek.
$dizi = array('indeks'=>'icerik');
echo $dizi[indeks];
yukarıda $dizi[indeks] yazımı mantıklı değildir. bu yazımda php ilk önce indeks adında bir sabit arar (yani define('indeks','baska bir sey'); yapsak baska bir sey aranacak) daha sonra sabitin olmadığını görünce 'indeks' adında bir elaman arar dizinin içinde. hatta 'notice' tipindeki hataları gösteriyorsanız, php sizi bu konuda bilgilendirecektir.
doğru yazım
echo $dizi['indeks'] ya da $dizi["indeks"] olmalıdır
Msnden ve özel mesaj ile lütfen yardım istemeyin...
- mysql_fetch_array() ile yaptığım while döngüleri sayfayı çok yavaşlatıyor ve çalışmıyor!
mysql_query() ile iç içe kullanmaktansa şu şekilde yapın;
PHP Kodu:<?php
$q = mysql_query('SELECT * FROM `table`');
while($arr = mysql_fetch_array($q, MYSQL_NUM))
echo $arr[0].'<br />';
?>
"...peki bu bilgi gerçek hayatta ne işime yarayacak?..."
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks