+ Cevap Yaz
Toplam 9 sayfadan 1. sayfa 1 2 3 4 5 ... En SonEn Son
84 sonuçtan 1 ile 10 arası gösteriliyor

Konu: PHP kodu yazarken sıkça sorulan sorular , rastlanan hatalar ve çözümleri

  1. #1
    Yns
    Yns hatta değil
    Yns Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    10/2004
    Mesaj
    2,808
    Üyeliği İptal Edildi

    Varsayılan PHP kodu yazarken sıkça sorulan sorular , rastlanan hatalar ve çözümleri

    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.
    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 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.

    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 mysql_error(); 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 ?

    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.
    PHP Kodu:
    @mysql_connect('localhost','root',''); 
    gibi..
    • 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($chCURLOPT_URL,"http://www.mysite.com/tester.phtml");
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_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.

  2. #2
    Yns
    Yns hatta değil
    Yns Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    10/2004
    Mesaj
    2,808
    Üyeliği İptal Edildi

    Varsayılan

    • 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.

  3. #3
    Yns
    Yns hatta değil
    Yns Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    10/2004
    Mesaj
    2,808
    Üyeliği İptal Edildi

    Varsayılan

    • Nasil moduler sayfalar yapabilirim ? index.php?islem=anasayfa gibi

    Birkaç yol mevcut , en kısa ve güvenli yöntemi ; index.php?sayfa=dosyalar
    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"); 

    ?> 
    sadece query_stringte kullanabilirsiniz.
    Ornek URI: index.php?uyelik
    PHP Kodu:
    $uzanti $_SERVER['QUERY_STRING'];
    if(
    $uzanti =='uyelik') include('uyelik.php');
    //... 
    • Kolayca bir sayfanın meta tag'lerini almak istiyorum ?
    get_meta_tags.
    • 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");
    }
    ?>
    • Yolladığım mailin okunup okunmadığını öğrenmek istiyorum
    Ek header yollayın ;
    PHP Kodu:
    $headers .= "Disposition-Notification-To: Your Name<you@you.com>\n"
    veya yolladığınız mail içinde gizli bir iframe verin.
    PHP Kodu:
    iframe name="control" src="http://www.yoursite.com/logger.php?process=log&mail=$mail" style="display:none"></iframe
    logger.php
    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);
    }
    ?>
    • Geri dönüşlü şifreleme yapmak istiyorum ?
    base64_encode,base64_decode

  4. #4

    Üyelik Tarihi
    06/2003
    Yer
    Ankara
    Mesaj
    2,712
    Bahadır Malkoç

    Varsayılan

    · 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...

  5. #5

    Üyelik Tarihi
    06/2003
    Yer
    Ankara
    Mesaj
    2,712
    Bahadır Malkoç

    Varsayılan

    · 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;
    PHP Kodu:
    <?php
    for ($m=0$m 10$m++):
    print 
    $m;
    //diğer işlemler
    endfor;
    ?>
    while için;
    PHP Kodu:
    <?php
    $i 
    0;
    while (
    $i 10):
    print 
    $i;
    //diğer işlemler
    $i++;
    endwhile;
    ?>
    switch 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;
    ?>
    foreach için;
    PHP Kodu:
    <?php
    $aile 
    = array("anne","baba","dede");

    foreach (
    $aile as $girdi):
    echo 
    "$girdi<br>";
    endforeach;

    ?>
    ve if için;
    PHP Kodu:
    <?php
    $cocuk_sayisi 
    $_POST["cocuk"];
    if (
    $cocuk_sayisi == 0):
    echo 
    "En kısa zamanda çocuk yapmalısınız...";
    elseif (
    $cocuk_sayisi and $cocuk_sayisi 0):
    echo 
    "Çocuk sayınız normal seviyede...";
    else:
    echo 
    "Sanırım doğum kontrolünden haberiniz yoktu :)";
    endif;
    ?>
    Böylece döngülere de şöyle bir göz atmış olduk
    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...

  6. #6
    Caesar Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    01/2005
    Yer
    Lost temple
    Mesaj
    322
    白石美

    Varsayılan

    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
    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); 
    şeklinde de hallolmaktadır.
    白石美帆 おっぱいチラ

  7. #7

    Üyelik Tarihi
    06/2003
    Yer
    Ankara
    Mesaj
    2,712
    Bahadır Malkoç

    Varsayılan

    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...

  8. #8

    Üyelik Tarihi
    06/2003
    Yer
    Ankara
    Mesaj
    2,712
    Bahadır Malkoç

    Varsayılan

    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...

  9. #9

    Üyelik Tarihi
    07/2006
    Mesaj
    387
    Ceviz Üyesi

    Varsayılan

    - 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($qMYSQL_NUM))
      echo 
    $arr[0].'<br />';

    ?>
    "...peki bu bilgi gerçek hayatta ne işime yarayacak?..."

  10. #10
    turker Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    07/2002
    Mesaj
    6,167
    Agresif Üye

    Varsayılan

    başka türlü nasıl kullanıyordun ki?

+ Cevap Yaz
Toplam 9 sayfadan 1. sayfa 1 2 3 4 5 ... En SonEn Son

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Benzer Konular

  1. Cevap: 30
    En Son Mesaj: 31/08/2008, 16:27
  2. Javascript kodu yazarken Mysql uygulaması
    By SerKanKARA in forum Javascript / DHTML / Ajax
    Cevap: 5
    En Son Mesaj: 23/12/2006, 16:40
  3. En çok rastlanan 10 güvenlik açığı (PHP)
    By fuzbing in forum Ağ / Güvenlik
    Cevap: 1
    En Son Mesaj: 07/09/2006, 01:33
  4. Çok Sık Sorulanlar
    By burhanmt in forum Pascal / Delphi / Delphi.NET
    Cevap: 0
    En Son Mesaj: 02/09/2005, 16:27
  5. Cevap: 22
    En Son Mesaj: 17/06/2004, 01:13

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz