Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

uzun aradan sonra tekrar merhaba php

Konu, 'PHP' kısmında edebali tarafından paylaşıldı.

  1. edebali

    edebali Üye

    Kayıt:
    4 Kasım 2002
    Mesajlar:
    161
    Beğenilen Mesajlar:
    0
    Şehir:
    türkiye
    merhaba arkadaşlar;
    bazı problemlerden dolayı uzun ara vermiştim php ' ye yarım kalmış bilgilerimle
    php kitapçığındaki ziyaretçi defteri programını yazmaya uğraşıyorum
    herhalde bu örnekte hata var önceden öcal.nette de bu konular yazılmıştı
    ama ben o sıralar ilgilenmediğim için dikkat etmemiştim.
    kitabta zaten forum ile işlemciyi birleştirerek anlatmış ben acemi olduğum için ayrı olursa daha
    net anlayacağım görüşündeyim.
    ilk önce kitaptaki kodları yazıyorum


    <?php
    if ( isset ( $HTTP_POST_VARS )) {
    // Form doldurulduktan sonra
    echo ("
    <HTML>
    <HEAD>
    <TITLE>PHP'de Misafir Defteri</TITLE>
    <meta http-equiv='content-type' content=\"text/html; charset=ISO-8859-9\">
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\">
    </HEAD>
    <BODY>
    <P><font size='3' class='s4' face='Arial, Helvetica'>
    ");

    $dosya_adi = "mesajlar.txt";
    if (file_exists("$dosya_adi")) {
    $yazilacak_dosya = fopen($dosya_adi,'a');
    }
    else {
    $yazilacak_dosya = fopen($dosya_adi,'w');
    }
    foreach ($HTTP_POST_VARS as $anahtar=>$deger ) {
    $yeni_anahtar = strtoupper($anahtar);
    print ("$yeni_anahtar: $deger<br>");
    $metin = "$yeni_anahtar: $deger<br>";
    fputs($yazilacak_dosya, $metin);
    }
    fputs($yazilacak_dosya, date("D d M Y h:i:s"));
    fputs($yazilacak_dosya, "<br>\n");
    fputs($yazilacak_dosya, "<center><img src='nokta.gif' width=100% height=1 border=0></center>\n");
    fclose($yazilacak_dosya);


    echo ("
    <HTML>
    <HEAD>
    <TITLE>PHP'de Misafir defteri</TITLE>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\">
    </HEAD>
    <BODY>
    <P><font size='3' class='s4' face='Arial, Helvetica'>
    <center><img src='nokta.gif' width=100% height=1 border=0></center>
    Sayın: $adi<br>
    Defterimi imzaladığınız için teşekkür ederim</P>
    <p>Ana Sayfaya Dönmek için <A HREF=\"index.htm\"> tıklayın</A><BR>
    Mesajları okumak için<A HREF=\"mesajlar01.php\"> tıklayın</A>
    </BODY>
    </HTML>
    ");
    }

    // Sayfa yeni açılıyorsa

    else {

    echo ("
    <HTML>
    <HEAD>
    <TITLE>PHP'de Formlar</TITLE>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\">
    </HEAD>
    <BODY>
    <FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\">
    <P><font size='3' class='s4' face='verdana, Arial, Helvetica'>Defteri imzalamadan okumak için <a href='mesajlar.php'>burayı tıklayın</a></FONT></P>
    <P><font size='3' class='s4' face='Arial, Helvetica'>
    Adınız, Soyadınız: <br><INPUT TYPE=\"TEXT\" NAME=\"adi\"><BR>
    Elektronik Adresiniz: <br><INPUT TYPE=\"TEXT\" NAME=\"adres\"><BR>
    Mesajınız:<BR><TEXTAREA NAME=\"mesaj\" ROWS=10 COLS=30 WRAP=virtual></TEXTAREA>
    <BR><BR><BR>
    <INPUT TYPE=\"SUBMIT\" VALUE=\"Defteri imzala!\"> <INPUT TYPE=\"RESET\" VALUE=\"Tümünü sil!\">
    </FORM>
    </BODY>
    </HTML>
    ");
    }
    ?>
    kod bu şekilde ve kitapta kd_01.php şeklinde kaydedin diyor .
    explorer da kd_01.php yazdığımız zaman
    Sayın:
    Defterimi imzaladığınız için teşekkür ederim

    Ana Sayfaya Dönmek için tıklayın
    Mesajları okumak için tıklayın
    yazısı çıkıyor.kitapta ise formun doldurulacağı yer çıkıyor.

    bende kitaptaki görüntüyü sağlamak için html etiketler ile aynısını yaptım.
    programın kodlarını bu durumda nasıl yapacağız.
    kitaptaki örnek hata vermeseydi uğraşa uğraşa yapabilirdim gibi geliyor ama başta hata olunca
    tam karıştı...

    neler yapmalıyım neler söyliyeceksiniz merakla bekliyorum......

    ....EDEBALİ.....





    :)
     
  2. sokrates

    sokrates Daimi Üye

    Kayıt:
    8 Temmuz 2002
    Mesajlar:
    537
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programmer
    Şehir:
    istanbul
    merhaba

    $_POST dizi degikeni php tarafindan otomatik olusturuluyo ,isset fonksiyonuda sadece degiskenin var olup olmadigina baktigi icin hep true sonucunu veriyo sanirim tamamen kisisel fikrim ,
    birileri bizi aydinlatir heralde bu konuda :)

    onun yerine empty fonksiyonunu kullanabilirsin
    if ( !empty($_POST )) { // $_POST dizi degiskeninin icerigi bos degilse

    veya en saglami
    if( getenv("content_length")!=0){ //form postla gonderilmisse
     
    Son düzenleme yönetici tarafından yapıldı: 29 Aralık 2002
  3. mkarabulut

    mkarabulut Misafir

    Üstada katılıyorum
    Zaten post kontrolünün en güzel yolu getenv fonksiyonunu kullanmaktır..
    Eğer POST gönderilmişse content_length değişkeni set edilir, normalde bu değişken post gönderilmemiş ise 0 değerindedir..
    Kod:
    if (getenv("content_length")==0) {
        //form gönderilmemiş formu göster
    } else {
       //post gönderilmiş
    }
    
    Kolay gelsin