天天看點

線上 PHP運作工具、資料庫可控

<a href="#%E6%91%98%E8%A6%81">摘要</a>

<a href="#%E5%AE%9E%E7%8E%B0%E6%80%9D%E8%B7%AF">實作思路</a>

<a href="#%E7%AE%80%E8%A6%81%E8%A7%A3%E9%87%8A">簡要解釋</a>

<a href="#%E5%B7%A5%E5%85%B7%E5%8E%9F%E7%90%86">工具原理</a>

<a href="#%E5%88%B6%E4%BD%9C">制作</a>

<a href="#mainphp">mainphp</a>

<a href="#%E4%B8%8A%E4%BC%A0%E6%BA%90%E7%A0%81">上傳源碼</a>

<a href="#ajax">ajax</a>

<a href="#%E4%B8%8A%E4%BC%A0%E6%BA%90%E7%A0%81-1">上傳源碼</a>

<a href="#%E8%8E%B7%E5%8F%96%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C">擷取運作結果</a>

<a href="#%E8%A7%A6%E5%8F%91%E6%97%B6%E6%9C%BA">觸發時機</a>

<a href="#%E6%BC%94%E7%A4%BA">示範</a>

<a href="#%E9%A6%96%E9%A1%B5">首頁</a>

<a href="#%E7%82%B9%E5%87%BBphp%E4%BB%A3%E7%A0%81%E7%BB%99%E5%87%BA%E6%8F%90%E7%A4%BA">點選PHP代碼給出提示</a>

<a href="#%E5%B8%B8%E8%A7%84%E4%BB%A3%E7%A0%81">正常代碼</a>

<a href="#%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E5%BA%93">操作資料庫</a>

<a href="#%E6%80%BB%E7%BB%93">總結</a>

不知道大家有沒有看到過這樣的一個網站。名字是“菜鳥工具”,裡面有很多的線上編輯,線上運作的小工具,實用也很友善。(嘻嘻,不是打廣告哈,不過确實很實用)。

線上 PHP運作工具、資料庫可控

作為一個PHP菜鳥,如果能有一個好用的,随時随地練習文法的工具該有多好啊。很明顯,上面的那個PHP線上工具,基本上已經可以滿足正常的需求了。

但是美中不足的是,不支援資料庫以及其他進階特性。是以這就顯得很尴尬了。不能練習資料庫語句,那還學個毛啊。是以還是自己動手吧,寫個能支援資料庫的線上工具,自己用。

對于PHP檔案而言,浏覽器向伺服器發送url請求的時候,解釋器就會自動的把檔案翻譯成了浏覽器可以解析的部分了。是以通路url的過程就是擷取php解釋過的資料的過程。

下面簡要的做個解釋。比方說咱們有這樣的一個temp.php檔案, 内容如下:

浏覽器通路的時候,得到的資料如下:

線上 PHP運作工具、資料庫可控

既然上面的temp.php檔案可以這樣工作,那麼試想一下,如果我們事先把想運作的檔案放到temp.php檔案裡面,然後在通路這個temp.php檔案,這樣豈不是就可以得到我們想要的結果啦。

而事實上,我就是這麼幹的,結果也證明,順序得當的話,還是挺不錯的。

我的想法就是:

給個按鈕,點選按鈕的時候首先會把源代碼發送到伺服器上,接下來調用一個ajax請求,把源代碼的運作結果取出來,顯示到“控制台”上。

下面将介紹具體的實作流程。

經過這段代碼,就可以将編輯好的源碼上傳到伺服器上指定的temp.php上了,然後準備過程就結束了。

這裡ajax起到了兩方面的作用:

一個是上傳源代碼

一個是擷取代碼運作結果

按照需求,隻有在點選運作按鈕的時候,才會執行上傳,下載下傳流程。是以隻需要為按鈕添加一個點選事件就可以啦。

剛好有一個阿裡雲伺服器,那麼就放上去吧。這樣也算是能夠随時随地擁有一個可以正常使用的線上PHP環境了。

線上 PHP運作工具、資料庫可控
線上 PHP運作工具、資料庫可控
線上 PHP運作工具、資料庫可控
線上 PHP運作工具、資料庫可控

最後來回顧一下,本文主要是介紹了如何實作一個線上PHP編輯工具。滿足了自己對于操作資料庫的需求。

另外比較重要的一點就是,之是以沒有使用表單的凡是送出/上傳 源代碼。就是因為使用表單的話,一旦送出的話,原來的表單内字段上的資訊就全部消失了,這不利于後續的代碼調試和修改。而采用ajax方式送出的話就沒有這麼多的限制了,反而能夠更加自由的進行設計。

大緻就是這麼多了。PHP線上編輯工具還是比較容易實作的(相較于其他程式設計語言而言)。

或許我會着手實作一個Python的線上工具,誰知道呢。╭(╯^╰)╮