Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

PHP counter by file IO

Posted on 2007 年 10 月 6 日2021 年 3 月 12 日 By 日落 在〈PHP counter by file IO〉中有 1 則留言

PHP 計數器,使用檔案讀寫的方式實作。

counter.php:

<?php
$pt = @fopen("log","r");
if( $pt ){
$size = filesize("log")==0?1:filesize("log");
$num = fread($pt,$size);
fclose($pt);

if( !is_numeric($num) ){
$num = 0;
}
$num++;

$pt = fopen("log","w");
fwrite($pt,$num);
fclose($pt);
}else{
$num=1;
$pt = fopen("log","w");
fwrite($pt,$num);
fclose($pt);
}
echo $num." 人次";
?>
Tags:PHP, 程式設計

PHP avoid SQL injection 2

Posted on 2007 年 9 月 8 日2021 年 3 月 12 日 By 日落 在〈PHP avoid SQL injection 2〉中有 1 則留言

之前在網路上找到一個函式可以分辨 php.ini 是否有開啟 magic_quote 並且把傳入的字串做處理:

function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

不過因為一個表單的欄位絕對不只十幾個,有可能超過一百的欄位,所以每次用到一個欄位就要自己打一次 $variabal = quotes( $variable ) 實在很不方便。

我想偷懶,所以用 foreach 把 $_POST 和 $_GET 的值一次處理完丟到 $http_post 和 $http_get 中,只要程式執行前執行一次所有欄位就全部處理完了。

function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

foreach( $_POST as $key => $value ){
$http_post[$key] = quotes( $value );
}
foreach( $_GET as $key => $value ){
$http_get[$key] = quotes( $value );
}
Tags:PHP, 程式設計

PHP encryption note

Posted on 2007 年 9 月 1 日2021 年 3 月 12 日 By 日落 在〈PHP encryption note〉中尚無留言

開始找可用的 PHP 編碼方式,MD5 已經不能在用了,SHA1 目前還好但是不知道以後會不會出問題。


$phrase = "Hello World";

$sha1a = base64_encode(sha1($phrase));
$sha1b = base64_encode(bin2hex(mhash(MHASH_SHA1,$phrase)));
$sha256b= base64_encode(bin2hex(mhash(MHASH_SHA256,$phrase)));

echo ("SHA1..:" . $sha1a . "n");
echo ("SHA1..:" . $sha1b . "n");
echo ("SHA256:" . $sha256b . "n");
?>
Tags:PHP, 網路架站, 資訊安全

用 PHP 隱藏檔案下載位置

Posted on 2007 年 8 月 27 日2021 年 3 月 12 日 By 日落 在〈用 PHP 隱藏檔案下載位置〉中尚無留言

很多網站都會怕大家知道檔案位置以後,開始隨便散步網址給大家盜連,這樣網站的流量馬上會爆掉。另外也有可能讓駭客找到漏洞上傳 Web Shell,並且開始遙控……。

後來玩 PHPWind 論壇的時候,發現論壇可以讓上傳的檔案名稱全部改掉,在下載的時候也看不到檔案在伺服器上面的位置,所以跑去看了一下原始碼是怎麼寫的。PHPWind 檔案下載的程式是寫成 function 放在 /job.php 裡面,找到下面這行:

elseif($action=='download')

他的確是用 header() 來做檔案連結,但是不是我想像中的 header(“Location: URL”),這樣其實瀏覽器還是可以看到檔案位置,他是用 header 讓瀏覽器知道之後傳的資料為檔案內容,讓瀏覽器把資料寫成檔案,然後由伺服器先讀檔案內容以後傳給瀏覽器。所以瀏覽器從頭到尾只知道要存檔時預設的檔名、檔案類型和檔案內容,完全不知道檔案在伺服器上的位址。下面是 job.php 負責檔案下載的程式片段:

header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()+31536000 ).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: '.$attachment.'; filename='.$name);
header('Content-type: '.$fileext);

if($attach_url && !file_exists("$attachdir/$attachurl") && function_exists('file_get_contents')){
$downcontent=file_get_contents($attach_url."/$attachurl");
}else{
$filesize = filesize($attachdir.'/'.$attachurl);
header('Content-Length: '.$filesize);
$downcontent=readover("$attachdir/$attachurl");
}
echo $downcontent;
exit;

稍微改了一下以後會變成下面這幾行:

header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: '.'attachment'.'; filename='.$file_name);
header('Content-type: '.$file_type);
header('Content-Length: '.filesize( $file_path_on_server ));
$downcontent=file_get_contents( $file_path_on_server );
echo $downcontent;

$file_nam:瀏覽器存檔時預設的檔案名稱
$file_type:檔案類型,檔案上傳時會顯示
$file_path_on_server:檔案在伺服器上真正的路徑

至於 header() 的設定細節我還沒摸清楚,header() 的資料很多,目前還沒整理出一個頭緒,弄清楚以後再來做筆記吧。

Tags:PHP, 程式設計, 網路架站

PHP Captcha

Posted on 2007 年 8 月 24 日2021 年 3 月 12 日 By 日落 在〈PHP Captcha〉中尚無留言

PHP Captcha Security 有提供 PHP 程式碼,不會很複雜。

程式中可以自訂要使用的字型,不過必須把字型檔位置標示清楚(或是放在同一個目錄下)。

var $font = 'monofont.ttf';

後面有三行程式馬會決定圖片大小和文字字數,可以寫死或是用網頁傳參數。

$width = isset($_GET['width']) && $_GET['height'] < 600 ? $_GET['width'] : '120';
$height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';

中間有三行會分別決定圖片的背景顏色、字體顏色以及雜點的顏色。

$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 20, 40, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);

程式產生圖形以後,會把字串記錄在 session 中,以後只要比對表單的字串和 session 中的字串,就可以知道輸入是否正確。

Tags:PHP, 資訊安全

文章分頁

上一頁 1 ... 23 24 25 26 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.