10天學(xué)會(huì)php(3)
發(fā)表時(shí)間:2024-06-02 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第七天學(xué)習(xí)目的:學(xué)會(huì)SESSION的使用SESSION的作用很多,最多用的就是站點(diǎn)內(nèi)頁面間變量傳遞。在頁面開始我們要session_start();開啟SESSION;然后就可以使用SESSION變量了,比如說要賦值就是:_SESSION['item']="item1&q...
第七天學(xué)習(xí)目的:學(xué)會(huì)SESSION的使用
SESSION的作用很多,最多用的就是站點(diǎn)內(nèi)頁面間變量傳遞。在頁面開始我們要session_start();開啟SESSION;
然后就可以使用SESSION變量了,比如說要賦值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很簡單吧。這里我們可能會(huì)使用到一些函數(shù),比如說判斷是不是某SESSION變量為空,可以這么寫:empty($_SESSION['inum'])返回true or false。
下面綜合一下前面所說的我們來看一個(gè)登陸程序,判斷用戶名密碼是否正確。
登陸表單是這樣:login.php
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">
<tr class="tdbg">
<td colspan="2"><div align="center">Administrators Login</div></td>
</tr>
<tr class="tdbg">
<td><div align="center">Username</div></td>
<td><div align="center">
<input name="username" type="text" id="username">
</div></td>
</tr>
<tr class="tdbg">
<td><div align="center">Password</div></td>
<td><div align="center">
<input name="password" type="password" id="password">
</div></td>
</tr>
<tr class="tdbg">
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Clear">
</div></td>
</tr>
</table></td></form>
</tr>
</table>
處理文件是這樣
<?
require_once('conn.php');
session_start();
$username=$_POST['username'];
$password=$_POST['password'];
$exec="select * from admin where username='".$username."'";
if($result=mysql_query($exec))
{
if($rs=mysql_fetch_object($result))
{
if($rs->password==$password)
{
$_SESSION['adminname']=$username;
header("location:index.php");
}
else
{
echo "<script>alert('Password Check Error!');location.href='login.php';</script>";
}
}
else
{
echo "<script>alert('Username Check Error!');location.href='login.php';</script>";
}
}
else
{
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>";
}?>
conn.php是這樣:
<?
$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
?>
由于 $_SESSION['adminname']=$username;我們可以這樣寫驗(yàn)證是否登陸語句的文件:checkadmin.asp
<?
session_start();
if($_SESSION['adminname']=='')
{
echo "<script>alert('Please Login First');location.href='login.php';</script>";
}
?>
呵呵,今天說到這里,明天說一下怎么弄一個(gè)分頁。第八天學(xué)習(xí)目的:做一個(gè)分頁顯示
關(guān)鍵就是用到了SQL語句中的limit來限定顯示的記錄從幾到幾。我們需要一個(gè)記錄當(dāng)前頁的變量$page,還需要總共的記錄數(shù)$num
對于$page如果沒有我們就讓它=0,如果有<0就讓它也=0,如果超過了總的頁數(shù)就讓他=總的頁數(shù)。
$execc="select count(*) from tablename ";
$resultc=mysql_query($execc);
$rsc=mysql_fetch_array($resultc);
$num=$rsc[0];
這樣可以得到記錄總數(shù)
ceil($num/10))如果一頁10記錄的話,這個(gè)就是總的頁數(shù)
所以可以這么寫
if(empty($_GET['page']))
{
$page=0;
}
else
{
$page=$_GET['page'];
if($page<0)$page=0;
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因?yàn)閜age是從0開始的,所以要-1
}
這樣$exec可以這么寫 $exec="select * from tablename limit ".($page*10).",10";
//一頁是10記錄的
最后我們需要做的就是幾個(gè)連接:
<a href="xxx.php?page=0">FirstPage</a>
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a>
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
這是一個(gè)大致的思路,大家可以想想怎么來優(yōu)化?今天說到這里,明天說一下一些注意的問題。
第九天學(xué)習(xí)目的:注意事項(xiàng)
因?yàn)槲沂窍葘W(xué)ASP的,所以再做PHP的時(shí)候會(huì)發(fā)現(xiàn)很多地方需要適應(yīng)。
1、注意不要漏了分號(hào)
2、注意不要漏了變量前的$
3、使用SESSION的時(shí)候注意不要遺漏session_start();
如果發(fā)生錯(cuò)誤的時(shí)候,可以采用以下方法:
1、如果是SQL語句出錯(cuò),就注釋了然后輸出SQL語句,注意也要注釋調(diào)后續(xù)的執(zhí)行SQL語句
2、如果是變量為空,大多是沒有傳遞到位,輸出變量檢查一下,檢查一下表單的id和name
3、如果是數(shù)據(jù)庫連接出錯(cuò),檢查是否正確打開MY SQL和是否遺漏了連接語句
4、注意縮進(jìn),排除括號(hào)不區(qū)配的錯(cuò)誤
在做大網(wǎng)站的時(shí)候,我的思路是先構(gòu)建數(shù)據(jù)庫,確定每一個(gè)字段的作用,和表之間的關(guān)系。然后設(shè)計(jì)后臺(tái)界面,從添加數(shù)據(jù)開始做起,因?yàn)樘砑邮欠癯晒梢灾苯拥綌?shù)據(jù)庫里面驗(yàn)證,做好了添加再做顯示的頁面,最后才是兩者的結(jié)合。一般來說后臺(tái)就包括添加刪除修改和顯示,后臺(tái)沒有問題了,前臺(tái)也沒有什么大問題。前臺(tái)還需要注意安全性和容錯(cuò)還有就是輸出格式。
好了,今天說到這里,明天說一下如果用PHP上傳文件和發(fā)郵件。
第十天學(xué)習(xí)目的:學(xué)會(huì)用PHP上傳文件和發(fā)郵件
上傳文件表單必須加上 enctype="multipart/form-data"
和 <input type="file" name="file">
下面看一下代碼:
$f=&$HTTP_POST_FILES['file'];
$dest_dir='uploads';//設(shè)定上傳目錄
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我這里設(shè)置文件名為日期加上文件名避免重復(fù)
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//設(shè)定上傳的文件的屬性
上傳的文件名為date("ymd")."_".$f['name'] ,可以在以后插入到數(shù)據(jù)庫的時(shí)候用到,PHP實(shí)際上是把你上傳的文件從臨時(shí)目錄移動(dòng)到指定目錄。move_uploaded_file($f['tmp_name'],$dest);這是關(guān)鍵
至于發(fā)郵件就更加簡單,可以使用mail()函數(shù)
mail("收件人地址","主題","正文","From:發(fā)件人\r\nReply-to:發(fā)件人的地址");
不過mail()需要服務(wù)器的支持,在WINDOWS下還需要配置SMTP服務(wù)器,一般來說外面的LINUX空間都行。
好像上傳文件和發(fā)郵件比ASP簡單很多,只要調(diào)用函數(shù)就可以了。ASP還需要用到服務(wù)器的不同組件比如FSO、JMAIL什么的。
十天學(xué)會(huì)PHP說到這里了,我的三大系列文章都用《十天學(xué)會(huì)》作為名字,想告訴大家的是ASP,PHP,ASP.NET入門都可以是十天,但是精通決不是十天啊,還需要大家自己去研究。
學(xué)習(xí)目的:學(xué)會(huì)用PHP上傳文件和發(fā)郵件
上傳文件表單必須加上 enctype="multipart/form-data"
和 <input type="file" name="file">
下面看一下代碼:
$f=&$HTTP_POST_FILES['file'];
$dest_dir='uploads';//設(shè)定上傳目錄
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我這里設(shè)置文件名為日期加上文件名避免重復(fù)
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//設(shè)定上傳的文件的屬性
上傳的文件名為date("ymd")."_".$f['name'] ,可以在以后插入到數(shù)據(jù)庫的時(shí)候用到,PHP實(shí)際上是把你上傳的文件從臨時(shí)目錄移動(dòng)到指定目錄。move_uploaded_file($f['tmp_name'],$dest);這是關(guān)鍵
至于發(fā)郵件就更加簡單,可以使用mail()函數(shù)
mail("收件人地址","主題","正文","From:發(fā)件人\r\nReply-to:發(fā)件人的地址");
不過mail()需要服務(wù)器的支持,在WINDOWS下還需要配置SMTP服務(wù)器,一般來說外面的LINUX空間都行。
好像上傳文件和發(fā)郵件比ASP簡單很多,只要調(diào)用函數(shù)就可以了。ASP還需要用到服務(wù)器的不同組件比如FSO、JMAIL什么的。
十天學(xué)會(huì)PHP說到這里了,我的三大系列文章都用《十天學(xué)會(huì)》作為名字,想告訴大家的是ASP,PHP,ASP.NET入門都可以是十天,但是精通決不是十天啊,還需要大家自己去研究。