① 如何將漢字轉換為iso-8859-1的字元串 - php進階討論
呵呵,我知道你的意思了,你看那個網頁的源碼,可以看到全是 xxxx 這樣的,這種寫法確孝飢實是可以在iso8859下面正確顯示中日韓文字。不過這樣做鏈模本質上是藉助了utf-16編碼,那個xxxxx就是漢字在uft-16下兩個位元組的值。請參考:在任意字元集下正常顯示網棚慎緩頁的方法http://www.phpchina.com/?action_viewnews_itemid_1107.html個人意見:這樣做沒有必要,使用unicode足夠了:)此外,htmlentities不是用來轉化字元集的,他的作用是把字元串中 ,& 等特殊字元轉換成 <, >, &這樣的形式,以免造成歧義。轉化字元集可以使用 iconv,mb_encoding_convert函數。[]
② PHP發送的電郵, hotmail收不到, 怎樣做
親 我給你份資料,你自己學學 關於 PHPmailer的,這個是燕十八的課,你網上搜搜,他的網站 自學IT網
,不行你就用他的方法 發郵件 真的自己使用socke他純便 指不定就那裡寫錯了,建議你使用PHPMAILER
第一,需要下載PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/
第二,確認你的伺服器系統已經支持socket ,通過phpinfo();查看是否支持sockets(socket 是屬於沒哪PHP擴展部分),如果顯現為「enabled」,那就是支持了。
第三,把文件解壓到你的web伺服器目錄下,調用類就可以了.
首先包含class.phpmailer.php,然後創建對象,設置參數,調用成員函數。
例1,做成函數方便調用
復制代碼 代碼如下:
<?php
require("phpmailer/class.phpmailer.php");
function smtp_mail( $sendto_email, $subject, $body, $extra_hdrs, $user_name){
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "200.162.244.66"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "yourmail"; // SMTP username 注意:普通郵件認證不需要加 @域名
$mail->Password = "mailPassword"; // SMTP password
$mail->From = "[email protected]"; // 發件人郵箱
$mail->FromName = "管理員"; // 發件人
$mail->CharSet = "GB2312"; // 這里指定字元集!
$mail->Encoding = "base64";
$mail->AddAddress($sendto_email,"username"); // 收件人郵箱和姓名
$mail->AddReplyTo("[email protected]","yourdomain.com");
//$mail->WordWrap = 50; // set word wrap 換行字數
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
// 郵件主題
$mail->Subject = $subject;
// 郵件內容
$mail->Body = "
<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>
I love php。
</body>
</html>
";
$mail->AltBody ="text/html";
亮消 if(!$mail->Send())
{
echo "郵件發送有誤 <p>";
echo "郵件錯誤信息: " . $mail->ErrorInfo;
exit;
}
else {
echo "$user_name 郵件發送成功!<br />";
枯鍵碼 }
}
// 參數說明(發送到, 郵件主題, 郵件內容, 附加信息, 用戶名)
smtp_mail("[email protected]", "歡迎使用phpmailer!", "NULL", "yourdomain.com", "username");
?>
注意:
1.郵件的字元集設置, $mail->CharSet = "GB2312"; // 這里指定字元集!在這里我只指定為GB2312因為這樣Outlook能正常顯示郵件主題,我嘗試過設為utf-8但在Outlook下顯示亂碼。
2.如果是發送html格式的郵件,那麼記得也指定
3.如果你想用它來群發郵件的話,記得修改包含文件函數,如:
require("phpmailer/class.phpmailer.php");
改為
require_once("phpmailer/class.phpmailer.php");
否則的話會產生類的重定義。
個人認為要使用phpmailer,首先,需要有一個郵件伺服器,PHP的 mail函數沒有指定,應該是使用的PHP設置的SMTP。
而在這里需要具體指定,同時需要指定郵件伺服器的管理者和密碼。
PHPMailer 也是一個功能強大的郵件類
PHPMailer的主要功能特點:
支持郵件 s/mime加密的數字簽名
支持郵件多個 TOs, CCs, BCCs and REPLY-TOs
可以工作在任何伺服器平台,所以不用擔心WIN平台無法發送郵件的問題的
支持文本/HTML格式郵件
可以嵌入image圖像
對於郵件客戶端不支持HTML閱讀的進行支持
功能強大的發送郵件調試功能debug
自定義郵件header
冗餘SMTP伺服器支持
支持8bit, base64, binary, and quoted-printable 編碼
文字自動換行
支持多附件發送功能
支持SMTP伺服器驗證功能
在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台測試成功
提供的下載文件中,包括內容詳細的說明文檔及示例說明,所以不用擔心難於上手的問題!
PHPMailer 非常小巧、簡單、方便、快捷
以上資料由Jiucool 翻譯自phpmailer 官網,轉載請註明!
PHPMailer的使用(這里以使用gmail smtp發送郵件為例,當然也支持sendmail pop 等其他方式):
首先到http://phpmailer.worxware.com/ 下載最新版本的程序包
下載完成後,找到class.phpmailer.php 、class.smtp.php兩個類放到自己的目錄下!
然後新建一個php文件這里命名為:phpmail_jiucool.php
phpmail_jiucool.php內容如下:
我直接將郵件發送模塊寫成一個函數postmail_jiucool_com(),大家使用的時候直接調用該函數即可,函數內容為:
復制代碼 代碼如下:
function postmail_jiucool_com($to,$subject = "",$body = ""){
//Author:Jiucool WebSite: http://www.jb51.net
//$to 表示收件人地址 $subject 表示郵件標題 $body表示郵件正文
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set("Asia/Shanghai");//設定時區東八區
require_once('class.phpmailer.php');
include("class.smtp.php");
$mail = new PHPMailer(); //new一個PHPMailer對象出來
$body = eregi_replace("[]",'',$body); //對郵件內容進行必要的過濾
$mail->CharSet ="UTF-8";//設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼
$mail->IsSMTP(); // 設定使用SMTP服務
$mail->SMTPDebug = 1; // 啟用SMTP調試功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 啟用 SMTP 驗證功能
$mail->SMTPSecure = "ssl"; // 安全協議
$mail->Host = "smtp.googlemail.com"; // SMTP 伺服器
$mail->Port = 465; // SMTP伺服器的埠號
$mail->Username = "SMTP伺服器用戶名"; // SMTP伺服器用戶名
$mail->Password = "SMTP伺服器密碼"; // SMTP伺服器密碼
$mail->SetFrom('發件人地址,如admin#jiucool.com #換成@', '發件人名稱');
$mail->AddReplyTo("郵件回復地址,如admin#jiucool.com #換成@","郵件回復人的名稱");
$mail->Subject = $subject;
$mail->AltBody
= "To view the message, please use an HTML compatible email viewer! -
From www.jiucool.com"; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, "收件人名稱");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!恭喜,郵件發送成功!";
}
}
③ php 如何獲取伺服器的信息
伺服器變數 $_SERVER 詳解:
1、$_SESSION['PHP_SELF'] — 獲取當前正在執行腳本的文件名
2、$_SERVER['SERVER_PROTOCOL'] — 請求頁面時通信協議的名稱和版本。例如,「HTTP/1.0」。
3、$_SERVER['REQUEST_TIME'] — 請求開始時的時間戳。從 PHP 5.1.0 起有效。和time函數效果一樣。
4、$_SERVER['argv'] — 傳遞給該腳本的參數。我試了下,get方法可以得到$_SERVER['argv'][0];post方法無法給他賦值。
5、$_SERVER['SERVER_NAME'] — 返回當前主機名。
6、$_SERVER['SERVER_SOFTWARE'] — 伺服器標識的字串,在響應請求時的頭信息中給出。 如Microsoft-IIS/6.0
7、$_SERVER['REQUEST_METHOD'] — 訪問頁面時的請求方法。例如:「GET」、「HEAD」,「POST」,「PUT」。
8、$_SERVER['QUERY_STRING'] — 查詢(query)的字元串(URL 中第一個問號 ? 之後的內容)。
9、$_SERVER['DOCUMENT_ROOT'] — 當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。 如E:\server
10、$_SERVER['HTTP_ACCEPT'] — 當前請求的 Accept: 頭信息的內容。
11、$_SERVER['HTTP_ACCEPT_CHARSET'] — 當前請求的 Accept-Charset: 頭信息的內容。例如:「iso-8859-1,*,utf-8」。
12、$_SERVER['HTTP_ACCEPT_ENCODING'] — 當前請求的 Accept-Encoding: 頭信息的內容。例如:「gzip」。
13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] — 當前請求的 Accept-Language: 頭信息的內容。例如:「en」。
14、$_SERVER['HTTP_CONNECTION'] — 當前請求的 Connection: 頭信息的內容。例如:「Keep-Alive」。
15、$_SERVER['HTTP_HOST'] — 當前請求的 Host: 頭信息的內容。
16、$_SERVER['HTTP_REFERER'] — 鏈接到當前頁面的前一頁面的 URL 地址。
17、$_SERVER['HTTP_USER_AGENT'] — 返回用戶使用的瀏覽器信息。也可以使用 get_browser() 得到此信息。
18、$_SERVER['HTTPS'] — 如果通過https訪問,則被設為一個非空的值,否則返回off.
19、$_SERVER['REMOTE_ADDR'] — 正在瀏覽當前頁面用戶的 IP 地址。
20、$_SERVER['REMOTE_HOST'] — 正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR。如本地測試返回127.0.0.1
21、$_SERVER['REMOTE_PORT'] — 用戶連接到伺服器時所使用的埠。我在本機測試沒通過,不知道什麼原因。
22、$_SERVER['SCRIPT_FILENAME'] — 當前執行腳本的絕對路徑名。如返回E:\server\index.php
23、$_SERVER['SERVER_ADMIN'] — 該值指明了 Apache 伺服器配置文件中的 SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值
24、$_SERVER['SERVER_PORT'] — 伺服器所使用的埠。默認為「80」。如果使用 SSL 安全連接,則這個值為用戶設置的 HTTP 埠。
25、$_SERVER['SERVER_SIGNATURE'] — 包含伺服器版本和虛擬主機名的字元串。
26、$_SERVER['PATH_TRANSLATED'] — 當前腳本所在文件系統(不是文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。 Apache 2 用 戶可以使用 httpd.conf 中的 AcceptPathInfo On 來定義 PATH_INFO。
27、$_SERVER['SCRIPT_NAME'] — 包含當前腳本的路徑。這在頁面需要指向自己時非常有用。__FILE__ 包含當前文件的絕對路徑和文件名(例如包含文件)。
28、$_SERVER['REQUEST_URI'] — 訪問此頁面所需的 URI。例如,「/index.html」。
29、$_SERVER['PHP_AUTH_DIGEST'] — 當作為 Apache 模塊運行時,進行 HTTP Digest 認證的過程中,此變數被設置成客戶端發送的「Authorization」HTTP 頭內容(以便作進一步的認證操作)。
30、$_SERVER['PHP_AUTH_USER']– 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的用戶名。
31、$_SERVER['PHP_AUTH_PW'] — 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的密碼。
32、$_SERVER['AUTH_TYPE']–當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。