php & aspx altogether

Kemarin saya telah berhasil menginstall PHP di Windows Vista saya dengan fast cgi, tetapi sedang malas untuk membuat blog tentang instalasi tersebut. Jika tertarik, baca how-to nya di sini

Sekarang saya menjajal si php handler dengan membuat sebuah web tak berguna yang terdiri dari halaman .php dan .aspx. Dari halaman php yang saya buat akan memanggil fungsi Ajax yang ditangani oleh tetangganya aspx. Untuk itu, saya akan membutuhkan Ajax.dll versi jaman dulu racikan Michael Schwarz yang penggunaannya bisa dilihat di sini.

Berikut ini saya tunjukkan lokasi websitenya kedua halaman tersebut.

lokasi

 

Tidak lupa, menambahkan referensi Ajax.dll yang membantu saya ber-ajax ria.

ajax.dll

 

Sekarang saya akan membuat sebuah fungsi sangat sederhana di Default.aspx.cs, yaitu mengambil waktu server

ajax method

Register Type For Ajax ini bermaksud untuk membangkitkan javascript yang membungkus method di atas. Berarti sampai saat ini, kita telah membuat method yang mengembalikan waktu di server dan telah membangkitkan javascript yang mengenal fungsi _Default.AmbilWaktuServer() yang akan mengembalikan waktu di server.

Rencananya, pada kedua halaman yang akan saya buat, katakanlah Default.aspx dan test.php akan memiliki body yang sama. Saya hanya membutuhkan sebuah elemen div untuk menampilkan waktu di server. Saya buat sesederhana mungkin seperti ini

body

 

Sesuai pedoman penggunaan Ajax.dll dari Michael Schwarz, maka script pada halaman aspx akan menjadi seperti ini

head aspx

Bagi yang tidak terbiasa dengan jquery, intinya web browser akan menjalankan 2 baris script pada saat halaman ini loaded:

  1. Memanggil fungsi Ajax AmbilWaktuServer untuk meminta data waktu dari server.
  2. menampilkan response dari server ke dalam elemen div dengan id="timelabel".

Tembak layar hasilnya adalah seperti ini

hasil

hasilnya adalah 10/05/2008 18:04:50. Ini adalah waktu server yang didapatkan dengan memanggil fungsi Ajax pada saat loaded. Dengan memanfaatkan addons di suatu browser, saya dapat mengetahui url yang dipanggil dengan _Default.AmbilWaktuServer untuk meminta data waktu di server. Untuk kepentingan halaman tetangganya, php, saya copy url tersebut beserta query stringnya sehingga saya dapat memanggilnya pula. Ini adalah tembak layar dari kodingan php tersebut

halaman php

Sekali lagi saya dibantu oleh jquery untuk memanggil url yang barusan.  Dan hasilnya pun keluar

hasilnya php

Wah ketahuan deh selang waktunya 7 menit kurang 7 detik. 

Bagaimana jika mengujinya dengan session?

Satu hal yang membuat saya penasaran adalah bagaimana kedua halaman ini (aspx dan php) menangani session. Sehingga, di atas elemen div "timelabel" tersebut, saya akan menampilkan session["views"]. Kedua halaman ini akan membuat dan menampilkan informasi views di session ( session["views"] ) yang diincrement setiap halaman tersebut dipanggil.

(upload gambar kelamaan ah)

test.php:

<body>
    <form id="form1" runat="server">
    <div>  
    <?php
        session_start(); 
        if(isset($_SESSION['views']))
            $_SESSION['views'] = $_SESSION['views']+ 1;
        else
            $_SESSION['views'] = 1;
        echo "views = ". $_SESSION['views'];
        echo '<div id="timelabel"></div>';
    ?>  
    </div>
    </form>
</body>
</html>

body @ Default.aspx:

<body>
    <form id="form1" runat="server">
    <div>
   
    views = <asp:Label ID="Views" runat="server" ></asp:Label>
   
    <div id="timelabel"></div>
   
    </div>
    </form>
</body>

Default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Ajax.Utility.RegisterTypeForAjax(typeof(_Default));

        if (Session["views"] == null)
        {
            Session["views"] = 1;
        }
        else
        {
            Session["views"] = 1 + Convert.ToInt32(Session["views"].ToString());
        }

        Views.Text = Session["views"].ToString();
    }

    [Ajax.AjaxMethod()]
    public static string AmbilWaktuServer()
    {
        return DateTime.Now.ToString();
    }
}



Dan ternyata informasi Views session yang tersimpan di session pada kedua halaman berbeda. Apakah karena proses yang menghandle masing-masing halaman berbeda sehingga httpcontext yang disimpan juga berbeda?

 

Share this post: | | | |
Published Sunday, May 11, 2008 4:33 AM by anwarchandra
Filed under:

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above:
Powered by Community Server (Commercial Edition), by Telligent Systems