當前位置:首頁 » 編程語言 » php的sin

php的sin

發布時間: 2022-04-28 11:14:56

php的常用系統函數有哪些

PHP自帶了大量的系統函數,使用這些函數可以完成大部分的任務。常用的有數學運算函數和日期時間函數。

1.數學運算函數:

數學運算是程序中最常執行的功能之一,PHP提供了很多系統函數實現運算功能,無須安裝、編譯和配置便可以直接使用。下表列出了常用的數學函數:

函數名稱

功能描述

函數名稱

功能描述

abs()

絕對值

is_finite()

判斷是否為有限值

acos()

反餘弦

is_infinite()

判斷是否為無限值

acosh()

反雙曲餘弦

is_nan()

判斷是否為合法數值

asin()

反正弦

lcg_value()

組合線性同餘發生器

asinh()

反雙曲正弦

log10()

以10為底的對數

atan2()

兩個參數的反正切

log()

自然對數

atan()

反正切

max()

最大值

atanh()

反雙曲正切

min()

最小值

base_convert()

在任意進制之間轉換數字

mt_getrandmax()

顯示隨機數的最大可能值

bindec()

二進制轉換為十進制

mt_rand()

生成更好的隨機數

ceil()

進一法取整

mt_sran()

播下一個更好隨機數種子

cos()

餘弦

octdec()

八進制轉換為十進制

cosh()

雙曲餘弦

pi()

圓周率

decbin()

十進制轉換為二進制

pow()

指數表達式

dechex()

十進制轉換為十六進制

rad2deg()

將弧度轉換為相應的角度值

decoct()

十進制轉換為八進制

rand()

產生一個隨機數

deg2rad()

將角度轉換為弧度

round()

對浮點數四捨五入

exp()

計算e的指數

sin()

正弦

floor()

捨去法取整

sinh()

雙曲正弦

fmod()

返回除法的浮點數余數

sqrt()

平方根

getrandmax()

顯示隨機數最大的可能值

srand()

播下隨機數發生器種子

hexdec()

十六進制轉換為十進制

tan()

正切

hypot()

計算直角三角形的斜邊長度

tanh()

雙曲正切

注意:這些數學函數僅能處理計算機中integer和float范圍的值。
示例:產生隨機密碼的的函數
function CreatePassword($length=6) //生成密碼函數,默認6位
{
$dictionary=」」; //密碼字典
$maxChar=strlen($dictionary); //獲取字典長度
$password=」」;
for($i=0; $i<$length; $i++) //隨機生成每一位
{
$password.=$dictionary[rand(0, $maxChar)]; //產生隨機數,再從字典取字母
}
return $password;
}

2.日期和時間運算:

PHP提供了豐富的日期和時間方面運算的函數。

1)UNIX時間戳:

時間戳(Timestamp)是源於UNIX系統的時間表示方法,是指從1970年1月1日(00:00:00GMT)起到現在所經過的秒數,因此也稱為UNIX時間戳。
在PHP中使用時間戳的最簡單方式就是調用time()函數,time()函數可以根據當前時間返回一個時間戳的表示法。示例:
echo 「當前時間戳為:」.time();

2)日期函數:

PHP提供的一些常用的日期函數。
①date()函數:
date()函數用於格式化一個本地日期和時間。語法格式為:
string date(string $format [, int $timestamp])
返回將整數$timestamp按照$format給定格式而產生的字元串。其中,$timestamp參數是可選的,如果沒有給出時間戳,則使用本地當前時間,即time()。
下表列出了$format格式化字元串參數的說明:



說明

返回值

D

月份中的第幾天,有前導零的2位數字

01到31

D

星期中的第幾天,文本表示,3個字母

Mon到Sun

J

月份中的第幾天,沒有前導零

1到31

L

L的小寫字母,表示星期幾的完整文本格式

Sunday到Saturday

N

數字表示的星期中的第幾天

1(表示星期一)到7(表示星期天)

S

每月天數後面的英文後綴,2個字元

st,nd,rd或th。可以和j一起用

W

星期中的第幾天,數字表示

0(表示星期天)到6(表示星期六)

Z

年份中的第幾天

0到366

W

年份中的第幾周,每周從星期一開始

例如:42(當年的第42周)

F

月份,完整的文本格式,例如January

January到December

M

數字表示的月份,有前導零

01到12

M

3個字母縮寫表示的月份

Jan到Dec

N

數字表示的月份,沒有前導零

1到12

t

給定月份所應有的天數

28到31

L

是否為閏年

如果是閏年為1,否則為0

o

年份數字

例如:2016

Y

4位數字完整表示的年份

例如:2016

y

2位數字表示的年份

例如:16

a

小寫的上午和下午值

am或pm

A

大寫的上午和下午值

AM或PM

g

小時,12小時格式,沒有前導零

1到12

G

小時,24小時格式,沒有前導零

0到23

h

小時,12小時格式,有前導零

01到12

H

小時,24小時格式,有前導零

00到23

i

有前導零的分鍾數

00到59

s

秒數,有前導零

00到59

e

時區標識

例如:UTC,GMT,Atlantic/Azores

I

是否為夏令時

如果是夏令時為1,否則為0

O

與格林威治時間相差的小時數

例如:+0200

Z

時差偏移量的秒數

-43200到43200

c

ISO8601格式的日期

2011-05-12T15:19:21+00:00

r

RFC822格式的日期

例如:Thu, 21 Dec 2011 06:07:08 +0200

U

從January 1 1970 00:00:00開始至今的秒數

與time()函數相同

示例:
$today=date(「m/d/y」); //結果為:07/19/12
$today=date(「F j, Y, g:i a」); //結果為:July 19, 2012, 9:07 am
$today=date(「Y年n月j日」); //結果為:2012年7月19日
$today=date(「Y-m-d H:i:s」); //結果為:2012-07-19 09:07:32
$today=date(「D M j G:i:s T Y」); //結果為:Thu Jul 19 9:07:32 CST 2012
$today=date(『i t i s t h e jS d a y』); //結果為:07 31 07 32 31 09 Asia/Shanghai 19th 19 am 12
$today=date(『\i\t \i\s \t\h\e jS \d\a\y』); //結果為:it is the 19th day
$today=date(『H:m:s \m \i\s\ \m\o \h』); //結果為:09:07:32 m is month
②gmdate()函數:
gmdate()函數實現與date()函數相同的功能,不同的是gmdate()函數返回的時間是格林威治標准時間(GMT)。語法格式為:
string gmdate(string $format [, int $timestamp])
③getdate()函數:
getdate()函數用於獲取指定的日期和時間信息。語法格式為:
array getdate([int $timestamp])
如果沒有指定時間戳$timestamp,則使用系統當前的本地時間。getdate()函數返回一個數組,數組中的每個元素代表日期和時間中的特定組成部分。下表列出了返回數組中鍵名的說明:

鍵名

說明

返回值例子

seconds

秒的數字表示

0到59

minutes

分鍾的數字表示

0到59

hours

小時的數字表示

0到23

mday

月份中的第幾天的數字表示

1到31

wday

星期中的第幾天的數字表示

0(表示星期天)到6(表示星期六)

mon

月份的數字表示

1到12

year

4位數字表示的完整年份

例如:2016

yday

一年中的第幾天的數字表示

0到365

weekday

星期幾的完整文本表示

Sunday到Saturday

month

月份的完整的文本表示

January到December

0

自從UNIX紀元開始至今的秒數

和time()的返回值類似,是一個時間戳

示例:
<?php
$today=getdate();
print_r($today);
printf(「今天是%s年%s月%s日 星期%s \n」, $today[「year」], $today[「mon」], $today[「mday」], $today[「wday」]);
printf(「現在時間是%s時%s分%s秒」, $today[「hours」], $today[「minutes」], $today[「seconds」]);
?>
執行後的結果為:
Arrar
(
[seconds]=>15
[minutes]=>37
[hours]=>9
[mday]=>19
[wday]=>4
[mon]=>7
[year]=>2016
[yday]=>200
[weekday]=>Thursday
[month]=>July
[0]=>1342661835
)
今天是2016年7月19日 星期4
現在時間是 9時37分15秒
④checkdate()函數:
checkdate()函數用於檢查一個日期是否有效,有效則返回true,否則返回false。語法格式為:
bool checkdate(int $month, int $day, int $year)
當滿足如下條件時,checkdate()函數將認為是一個有效的日期:
·$year的值是從1到32767
·$month的值是從1到12
·$day的值在給定的$month所應該具有的天數范圍之內,包括閏年情況
示例:
echo checkdate(2,29,2012)?」有效」:」無效」;

2)時間函數:

①time()函數:
time()函數使用方法非常簡單,沒有參數調用後返回當前日期和時間的UNIX時間戳。語法格式為:
int time(void)
示例:
$next50day=time()+(50*24*60*60); //計算50天以後的日期
②mktime()函數:
mktime()函數的作用與time()函數相同,都可以返回一個時間戳表示的時間。不同的是,在mktime()函數中可以指定具體的日期和時間。語法格式為:
int mktime([int $hour],[int $minute],[int $second],[int $month], [int $day],[int $year])
上述參數列表從右向左順序省略,任何省略的參數會被設置為本地日期和時間的當前值。如果指定的時間無法表示,則返回false。mktime()函數在做日期計算和驗證方面很有用。示例:
$day1=mktime(0,0,0,12,25,2012);
$day2=mktime(0,0,0,10,1,2012);
$days=($day1-$day2)/(24*60*60); //根據時間戳計算出相差的天數
③strtotime()函數:
strtotime()函數用於將可閱讀的英文日期/時間字元串轉換成UNIX時間戳。語法格式:
int strtotime(string $time[, int $now])
其中,$time參數表示要被轉換的字元串,$now表示計算返回值的時間戳。如果沒有提供$now參數,將使用系統的當前時間。strtotime()函數成功時返回時間戳,否則返回false。
④microtime()函數:
microtime()函數調用後將返回當前UNIX時間戳和微秒數。語法格式為:
mixed microtime([bool $get_as_float])
這里的可選參數$get_as_float是一個布爾值,如果為true將返回一個浮點數。默認不帶參數時將以「msec sec」格式返回一個字元串,其中msec是微秒部分,sec是UNIX時間戳。

㈡ php 計算經緯度之間相差多少公里

//php 計算地圖上兩個坐標之間的距離

define('EARTH_RADIUS', 6378.137);//地球半徑,假設地球是規則的球體
define('PI', 3.1415926);
/**
* 計算兩組經緯度坐標 之間的距離
* params :lat1 緯度1; lng1 經度1; lat2 緯度2; lng2 經度2; len_type (1:m or 2:km);
* return m or km
*/
function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)
{
$radLat1 = $lat1 * PI ()/ 180.0; //PI()圓周率
$radLat2 = $lat2 * PI() / 180.0;
$a = $radLat1 - $radLat2;
$b = ($lng1 * PI() / 180.0) - ($lng2 * PI() / 180.0);
$s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
$s = $s * EARTH_RADIUS;
$s = round($s * 1000);
if ($len_type --> 1)
{
$s /= 1000;
}
return round($s, $decimal);
}
echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//輸出距離/米

㈢ php如何生成加粗或者斜體的文字樣式圖片

  1. 加粗或者斜體的文字可以用php的函數控制.我想你是想生成驗證碼圖片是嗎?

  2. 如果是想生成驗證么圖片有幾個函數可以考慮

    imagecreate($length,$height)創建圖片.參數是圖片的寬度和高度

    imagecolorallocate($image,$r,$g,$b)設置背景色,r b g就是圖片的三色rgb參數.這個可以由傳入0-255的隨機數決定隨機的背景色.還可以生成字體色

    imagettftext($_image,$fontSize,mt_rand(-40,70),$codeNX,$fontSize*1.5,$_color,$ttf,$code[$i]);寫入隨機的文字,這里要一個字一個字寫.所以這個函數要循環調用.

    網路了一下 找到了一個類...如下


  3. <?php
    /**
    *安全驗證碼
    *
    *安全的驗證碼要:驗證碼文字扭曲、旋轉,使用不同字體,添加干擾碼。
    *如果用中文做驗證碼(我這里不是哦,有興趣你來改成用中文的),安全度會更好些,但驗證碼扭曲和旋轉是王道,用了字體也算是已經給字體扭曲了,我就不再去給他添一隻扭曲的足了。
    *可配置的屬性都是一些簡單直觀的變數,我就不用弄一堆的setter/getter了
    *
    *@author流水孟春<cmpan(at)qq.com>
    *@rightNEWBSD
    *@linkhttp://labs.yulans.cn/YL_Security_Secoder
    *@linkhttp://wiki.yulans.cn/docs/yl/security/secoder
    */
    classYL_Security_Secoder{
    /**
    *驗證碼的session的下標
    *
    *@varstring
    */
    publicstatic$seKey='sid.sekey.ylans.cn';
    publicstatic$expire=3000;//驗證碼過期時間(s)
    /**
    *驗證碼中使用的字元,01IO容易混淆,建議不用
    *
    *@varstring
    */
    publicstatic$codeSet='346789ABCDEFGHJKLMNPQRTUVWXY';
    publicstatic$fontSize=25;//驗證碼字體大小(px)
    publicstatic$useCurve=true;//是否畫混淆曲線
    publicstatic$useNoise=true;//是否添加雜點
    publicstatic$imageH=0;//驗證碼圖片寬
    publicstatic$imageL=0;//驗證碼圖片長
    publicstatic$length=4;//驗證碼位數
    publicstatic$bg=array(243,251,254);//背景

    protectedstatic$_image=null;//驗證碼圖片實例
    protectedstatic$_color=null;//驗證碼字體顏色

    /**
    *輸出驗證碼並把驗證碼的值保存的session中
    *驗證碼保存到session的格式為:$_SESSION[self::$seKey]=array('code'=>'驗證碼值','time'=>'驗證碼創建時間');
    */
    publicstaticfunctionentry(){
    //圖片寬(px)
    self::$imageL||self::$imageL=self::$length*self::$fontSize*1.5+self::$fontSize*1.5;
    //圖片高(px)
    self::$imageH||self::$imageH=self::$fontSize*2;
    //建立一幅self::$imageLxself::$imageH的圖像
    self::$_image=imagecreate(self::$imageL,self::$imageH);
    //設置背景
    imagecolorallocate(self::$_image,self::$bg[0],self::$bg[1],self::$bg[2]);
    //驗證碼字體隨機顏色
    self::$_color=imagecolorallocate(self::$_image,mt_rand(1,120),mt_rand(1,120),mt_rand(1,120));
    //驗證碼使用隨機字體
    $ttf=dirname(__FILE__).'/ttfs/'.mt_rand(1,20).'.ttf';

    if(self::$useNoise){
    //繪雜點
    self::_writeNoise();
    }
    if(self::$useCurve){
    //繪干擾線
    self::_writeCurve();
    }

    //繪驗證碼
    $code=array();//驗證碼
    $codeNX=0;//驗證碼第N個字元的左邊距
    for($i=0;$i<self::$length;$i++){
    $code[$i]=self::$codeSet[mt_rand(0,27)];
    $codeNX+=mt_rand(self::$fontSize*1.2,self::$fontSize*1.6);
    //寫一個驗證碼字元
    imagettftext(self::$_image,self::$fontSize,mt_rand(-40,70),$codeNX,self::$fontSize*1.5,self::$_color,$ttf,$code[$i]);
    }

    //保存驗證碼
    isset($_SESSION)||session_start();
    $_SESSION[self::$seKey]['code']=join('',$code);//把校驗碼保存到session
    $_SESSION[self::$seKey]['time']=time();//驗證碼創建時間

    header('Cache-Control:private,max-age=0,no-store,no-cache,must-revalidate');
    header('Cache-Control:post-check=0,pre-check=0',false);
    header('Pragma:no-cache');
    header("content-type:image/png");

    //輸出圖像
    imagepng(self::$_image);
    imagedestroy(self::$_image);
    }

    /**
    *畫一條由兩條連在一起構成的隨機正弦函數曲線作干擾線(你可以改成更帥的曲線函數)
    *
    *高中的數學公式咋都忘了涅,寫出來
    * 正弦型函數解析式:y=Asin(ωx+φ)+b
    *各常數值對函數圖像的影響:
    *A:決定峰值(即縱向拉伸壓縮的倍數)
    *b:表示波形在Y軸的位置關系或縱向移動距離(上加下減)
    *φ:決定波形與X軸位置關系或橫向移動距離(左加右減)
    *ω:決定周期(最小正周期T=2π/∣ω∣)
    *
    */
    protectedstaticfunction_writeCurve(){
    $A=mt_rand(1,self::$imageH/2);//振幅
    $b=mt_rand(-self::$imageH/4,self::$imageH/4);//Y軸方向偏移量
    $f=mt_rand(-self::$imageH/4,self::$imageH/4);//X軸方向偏移量
    $T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
    $w=(2*M_PI)/$T;

    $px1=0;//曲線橫坐標起始位置
    $px2=mt_rand(self::$imageL/2,self::$imageL*0.667);//曲線橫坐標結束位置
    for($px=$px1;$px<=$px2;$px=$px+0.9){
    if($w!=0){
    $py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
    $i=(int)((self::$fontSize-6)/4);
    while($i>0){
    imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//這里畫像素點比imagettftext和imagestring性能要好很多
    $i--;
    }
    }
    }

    $A=mt_rand(1,self::$imageH/2);//振幅
    $f=mt_rand(-self::$imageH/4,self::$imageH/4);//X軸方向偏移量
    $T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
    $w=(2*M_PI)/$T;
    $b=$py-$A*sin($w*$px+$f)-self::$imageH/2;
    $px1=$px2;
    $px2=self::$imageL;
    for($px=$px1;$px<=$px2;$px=$px+0.9){
    if($w!=0){
    $py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
    $i=(int)((self::$fontSize-8)/4);
    while($i>0){
    imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//這里(while)循環畫像素點比imagettftext和imagestring用字體大小一次畫出(不用這while循環)性能要好很多
    $i--;
    }
    }
    }
    }

    /**
    *畫雜點
    *往圖片上寫不同顏色的字母或數字
    */
    protectedstaticfunction_writeNoise(){
    for($i=0;$i<10;$i++){
    //雜點顏色
    $noiseColor=imagecolorallocate(
    self::$_image,
    mt_rand(150,225),
    mt_rand(150,225),
    mt_rand(150,225)
    );
    for($j=0;$j<5;$j++){
    //繪雜點
    imagestring(
    self::$_image,
    5,
    mt_rand(-10,self::$imageL),
    mt_rand(-10,self::$imageH),
    self::$codeSet[mt_rand(0,27)],//雜點文本為隨機的字母或數字
    $noiseColor
    );
    }
    }
    }

    /**
    *驗證驗證碼是否正確
    *
    *@paramstring$code用戶驗證碼
    *@returnbool用戶驗證碼是否正確
    */
    publicstaticfunctioncheck($code){
    isset($_SESSION)||session_start();
    //驗證碼不能為空
    if(empty($code)||empty($_SESSION[self::$seKey])){
    returnfalse;
    }
    //session過期
    if(time()-$_SESSION[self::$seKey]['time']>self::$expire){
    unset($_SESSION[self::$seKey]);
    returnfalse;
    }

    if($code==$_SESSION[self::$seKey]['code']){
    returntrue;
    }

    returnfalse;
    }
    }


    //useage
    /*
    YL_Security_Secoder::$useNoise=false;//要更安全的話改成true
    YL_Security_Secoder::$useCurve=true;
    YL_Security_Secoder::entry();
    */

    /*
    //驗證驗證碼
    if(!YL_Security_Secoder::check(@$_POST['secode'])){
    print'errorsecode';
    }
    */
  4. 這是效果

㈣ php經緯度之間的距離怎麼算單位是公里

這里使用php計算兩個坐標(經度,緯度)之間的距離,返回結果為米或者千米

function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
{
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat/2)*sin($dlat/2)+cos($lat1)*cos($lat2)*sin($dlng/2)*sin($dlng/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return ($miles ? ($km * 0.621371192) : $km);
}

㈤ php算三角函數

cos — 餘弦
cosh — 雙曲餘弦

sin — 正弦
sinh — 雙曲正弦

tan — 正切
tanh — 雙曲正切

acos — 反餘弦

acosh — 反雙曲餘弦
asin — 反正弦
asinh — 反雙曲正弦
atan2 — 兩個參數的反正切
atan — 反正切
atanh — 反雙曲正切

㈥ PHP中COOKIE或SESSION值在不同頁面取值不了

在一個頁面設置一個cookie時,必須刷新或到下一個頁面才可以用 $_COOKIE 得到變數的值.原因是因為當頁面第一次被瀏覽器訪問載入時,頁面中的 cookie 會被設置,將其發送存儲到客戶端指定的存儲位置,所以$_COOKIE沒有接收到客戶端發送過來的 cookie 變數的值,當刷新或到下一個頁面時,客戶端會在頁面程序在伺服器端運行之前,發送與該地址相對應的 cookie到伺服器端,所以 $_COOKIE 可以得到的值!
說白了就是當每一個頁面被訪問時,如果客戶端找到了與訪問地址相對應的 cookie 時,會在程序在伺服器端運行之前發送這個 cookie 到伺服器端. (個人對此的看法)本人表達能力不強,如有不明,還請抱歉!php中設置cookie數組的時候,不可以用像php中的那個添加數據的方法:
<?php
setcookie('my_cookie[]', 1);
setcookie('my_cookie[]', 2);
print_r($_COOKIE); // Array ( [my_cookie] => Array ( [0] => 1 ))
// 數組的值添加是添加成功了,不過索引沒有變,後面的數據將前的數據覆蓋了!由此得到
my_cookie[],默認指向數據的第一元素的位置,即索引為0 的位置. 注意與php中的不一樣! 以後用cookie數據記住要指定數組元素索引哦!

$my_cookie[] = 1;
$my_cookie[] = 2;
print_r($my_cookie); //Array ( [0] => 1 [1] => 2)
?>刪除 cookie 變數的兩個方法:
1.php
<?php
setcookie('user_name_1', 'zhaofei299', time()+3600); // 生存期為 1 個小時
setcookie('user_name_2', 'ZHAOFEI299', time()+3600); // 生存期為 1 個小時
?>2.php
<?php
setcookie('user_name_1'); // 第一種
setcookie('user_name_2', "", time()-1); // 第二種
print_r($_COOKIE); // 刷新頁面2下以上會輸出 Array ( [user_name_1] => )/*為什麼超級全局變數 $_COOKIE 中的 user_name_1 沒有被刪除(變數為空並不代表不存在),而user_name_2被刪除了? 那是因為兩個刪除變數的方式不同!

第一種: 是設置了 cookie 的生存期, 只不過是將它的值默認設置為空,生存期為與瀏覽器一樣,瀏覽器關閉時,cookie才會刪除!所以當重新打開一個瀏覽器,輸出地址時,才會發現 cookie 變數全部被刪除了!將2.php 中兩個 setcookie() 函數部分注釋掉看看(重新輸出了地址)!第二種: 也是設置了 cookie 的生存期,是使 cookie 的生存期一定過期, cookie 也就被刪除,所以刷新頁面,客戶端向伺服器端發送 cookie 時, $_COOKIE 並沒有能夠得到該cookie變數的值!
*/
?>會話id默認儲放在客戶端Cookie中!
<?php
session_start();
print_r($_COOKIE);
?>
cookie的設置有兩種方法header('set-cookie:user=zhaofei299');
setcookie('user', 'zhaofei299');會話變數不能被GET數據或POST數據重載!使用session變數傳遞數組,對象時無需序列化!
使用session變數傳遞對象時,在調用session_start()之前,必須包含該對類對象的定義,反序列化(serialize)也是如此!
刪除單個會話變數可以使用unset($_SESSION['***']) 直接刪除!刪除所有的會話變數不可以用unset($_SESSION),因為這樣會將所有的會話信息刪除,包含存儲在COOKIE中的PHPSESSID,也就是破壞了兩個頁面之間的會話聯系,應該使用$_SESSION = array();消除會話id,使頁面之間失去聯系!
session_destroy();
程序清單1.1
<?php
session_start();
header('content-type:text/html;charset=utf-8');
$_SESSION['a'] = 'a';
$_SESSION['b'] = 'b';unset($_SESSION); //測試後,再注釋下看看
$_SESSION['user'] = 'zhaofei299';
echo 'SESSION_ID: '.session_id().'
';
echo '<a href="3.php" target="_blank">測試下</a>';
?>
<?php
session_start();echo $_SESSION['user'];
echo session_id(); //會話變數改變了
?>會話id(session_id)的兩種方式傳遞:
1.cookie
2.url因為默認session是基於cookie的,而cookie又是跟隨http協議發送的,所以與cookie一樣,在session_start()之前不能有任何輸出!現在主要說一說第二種,通過 url 傳遞會話id
php中已經定義SID這個常量來得到 會話的id
sesssin_id 的使用!
<?php
session_start();
echo defined('SID')?'true':'false'; // true
echo SID; //什麼也沒有?
?>
為什麼SID的值會是null 呢?是它哪裡有問題了?
原因是因為 session 默認是基於 cookie 的,而 SID 只有 session_id 通過 url
傳遞數據時才會被賦值!
在瀏覽器中將 cookie 禁用,你就會發現 SID 有了輸出,而不是 null!
刪除session要三步實現.
<?php
session_destroy(); // 第一步: 刪除伺服器端session文件,這使用
setcookie(session_name(),'',time()-3600); // 第二步: 刪除實際的session:
$_SESSION = array(); // 第三步: 刪除$_SESSION全局變數數組
?>大家都知道session變數是保存在伺服器端的,也就是說session的變數會保存在伺服器中一個目錄中,我們可以在php.ini中的session.save_path 那裡可以找到session文件中保存的地址.默認的session的生存期是瀏覽的關閉就結束,但要知道會話過期結束後,當打開頁面session_start()會判斷會話id 是否存在,如果不存在就創建一個,否則將該會話id 的變數載入頁面!因為過期session_id會被創建一個新的,但它保存在伺服器端的session文件並沒有被刪除(關閉瀏覽器,打開session文件保存地看看),所以要用session_destory()函數清除會話id,並同時清除相應的會話文件,這樣的話才能做到最徹底的清除!
session_id 使用 url 傳遞session 變數數據時,因為session_start()開啟會話時會判斷會話id 是否存在,如果不存在就創建一個,否則將該會話id 的變數載入頁面!
而現在是使用url 來傳遞session_id,然而每一次 刷新/進入頁面 都會生成一個會話id,所以頁面之間就不能得到在另一頁面設置過的session_id 的變數,那麼使用 session也就沒什麼意義了!解決方法:在session_start()之前,手動設置頁面的session_id,這樣頁面的就可以得到前一頁中所設置的session變數的,也就實現了會話的傳遞,如下代碼可以說明!
//已禁用 cookie1.php
<?php
session_start();
$_SESSION['user'] = 'zhaofei299';
echo '<a href="2.php?'.SID.'">下一頁</a>';
?>1.php的第4行代碼也可以寫成:echo '<a href="2.php">下一頁</a>';可以設置php.ini 中的 session.use_trans_sid 為1,這樣當使用 url 傳遞會話 id 時,
瀏覽器會自動將 session_id 追加到 url 的後面!
就好像 在瀏覽器中 輸入: www.cn-juking.com 一樣,瀏覽器會自動將其更換成 http://www.cn-juking.com/2.php
<?php
session_id($_GET['PHPSESSID']); // 手動設置session_id,這種就可以使用前一個頁面的session_id 的變數了,也就實現了會話!
session_start();
print_r($_SESSION);
?>常用session函數:bool session_start(void); 初始化session
bool session_destroy(void): 刪除伺服器端session關聯文件。
string session_id() 當前session的id
string session_name() 當前存取的session名稱,也就是客戶端保存session ID的cookie名稱.默認PHPSESSID。
array session_get_cookie_params() 與這個session相關聯的session的細節.
string session_cache_limiter() 控制使用session的頁面的客戶端緩存
ini session_cache_expire() 控制客戶端緩存時間
bool session_destroy() 刪除伺服器端保存session信息的文件
void session_set_cookie_params ( int lifetime [, string path [, string domain [, boolsecure [, bool httponly]]]] )設置與這個session相關聯的session的細節
bool session_set_save_handler ( callback open, callback close, callback read, callbackwrite, callback destroy, callback gc )定義處理session的函數,(不是使用默認的方式)
bool session_regenerate_id([bool delete_old_session]) 分配新的session id

㈦ php函數設定參數類型

functionsin($value)
{
if(!is_bool($value))
{
echo"Warning:Notabooleanvalue!";

return;
}

//用戶代碼
//用戶代碼
//用戶代碼
}


跟樓上大同小異!加了個return!

㈧ php函數查詢手冊

php在線參考手冊:http://www.veryhuo.com/a/manual/php/

㈨ 最簡單 php 代碼

<?php

mysql_query("insert into guahao values('".$name."','".$nl."','".$shouji."','".$sname."','".$info."')");
?>

㈩ 關於php的三個等號和兩個等號的區別!

簡單的說,兩個等號是模糊等於也就是一般的等於,在php中不同的類型也是可以比較的,而這點在其他的強類型語言中是不行的。三個等號表示全等於,不但數值一樣,而且類型也相同,如下面例子:


$a='';
$b=0;

if($a==$b){
echo'$a等於$b<br>';
}else{
echo'$a不等於$b<br>';
}

if($a===$b){
echo'$a全等於$b<br>';
}else{
echo'$a不全等於$b<br>';
}
/*
結果是:
$a等於$b
$a不全等於$b
*/

下面的圖片是從php手冊中截取的:

熱點內容
安卓游戲舊版本從哪個軟體下載 發布:2025-05-16 00:00:20 瀏覽:327
連接聚類演算法 發布:2025-05-15 23:55:09 瀏覽:977
工資演算法單休 發布:2025-05-15 23:52:30 瀏覽:818
超凡先鋒配置不行怎麼辦 發布:2025-05-15 23:27:54 瀏覽:531
win7取消加密 發布:2025-05-15 23:26:37 瀏覽:471
不用internet打開ftp 發布:2025-05-15 23:06:00 瀏覽:153
sql字元串取數字 發布:2025-05-15 22:57:45 瀏覽:124
推薦編程課 發布:2025-05-15 22:34:12 瀏覽:618
表拒絕訪問 發布:2025-05-15 22:29:37 瀏覽:978
電腦怎樣解壓文件 發布:2025-05-15 22:25:32 瀏覽:439