主題: [php] [求助]PHP 變數清除 [打印本頁]
發表人:
cheng822 時間: 2006-5-1 02:10 PM 主題: [求助]PHP 變數清除
大家好...:<-色誘
我想尋問一下PHP變數的方式.
我在<?php下定了一個global $u 用來當checkbox的陣列名字. 用變數$r從mySQL叫出資料當checkbox的value. 寫法如下: (用迴圈跑完checkbox)
for ($s=0; $s < xxxx; $s++){
INPUT TYPE=CHECKBOX NAME=u[] value=$r[0]
}
用此方法可以將打勾的checkbox指向資料庫(mySQL)是同一筆資料.
判斷為
if (isset ($_POST['email'])){ <-有一個按鈕的name是email
for($i = 0 ; $i < sizeof($u); $i++) { <-判斷有幾個checkbox被打勾(此$u是checkbox u[]的陣列
$link4 = @mysql_connect(xxxxxxxx) <-連至mySQL
@mysql_select_db(xxxxx) <-選取mySQL的database
$result4 = mysql_query("SELECT email FROM member_user WHERE User_Id = '$u[$i]' ") <-選取email如果database的User_Id有和$u[$i] 一樣
while($e = mysql_fetch_array($result4)){ <-將選取到的email資料寫入陣列$e
$address = $e[0]; <-變數$address 指向陣列$e[i]
}<-end of while
$mailsend = mail($address, $subject, $body, "From: $from");<-用mailsend function送出email(除了$address變數之前有提到. 剩下的被我省略)
print("Email for $u[$i] is sent." . "<br>");<-顯示email有寄給誰
}<-end of for loop
}<-end of if
我這樣寫的功能是判定打勾的checkbox可以從database找到user的email address然後用迴圈將email一封一封的寄出.
以上都可以正常寄出且資料無誤. 只是我發現當我F5 reload整個webpage時$u的資料還是在所以下面還是有寫Email for xxx is sent. 我試過用unset(golbal());可是還是沒用. 請問各位我要如何在寄完email後把$u的資料清除?
感激不盡~
發表人:
Vic 時間: 2006-5-1 03:12 PM
又是我 @"@
你可以試在
}<-end of for loop
下加
unset($_POST['email']);
不過估計這方法不一定有效, 因為在F5時, POST的variable會再傳送至server, 不能做unset的動作.
建議 在完成 email傳送後, redirect到另一頁
在
}<-end of for loop
下加
header("Location: sendok.php");
至於sendok.php只需要有
<?php
echo "email傳送完畢";
?>
那F5也只會 reload sendok.php這一頁
發表人:
cheng822 時間: 2006-5-2 01:33 PM
感謝熊大~
用unset($_POST['email']);沒有用~~想一想應該沒有可以直接清變數的方法...像有時po完文按F5會重覆po的意思應該一樣~
我是查到用refresh的方式可以清掉變數用法應該跟熊大給的差不多. 寫法是:
<?php
}<-end of if
print("<META HTTP-EQUIV=Refresh CONTENT=\"3; URL=http://xxx.xxx.xxx/yyy.php\">");
?>
content=x 設0就會直接refresh,設1就是1秒後refresh. 依此類推.
URL指到目前的page因為這樣user就可以在同一個page繼續做下一個事件
歡迎光臨 TWed2k (http://twed2k.org/) |
Powered by Discuz! 4.1.0 |