php篇 重拾自學之路78910(自娛自樂)

學習目的:學會session的使用php

SESSION的做用不少,最多用的就是站點內頁面間變量傳遞。在頁面開始咱們要session_start();開啓SESSION;
而後就可使用SESSION變量了,好比說要賦值就是:$_SESSION['item']="item1";要獲得值就是$item1=$_SESSION['item'];,很簡單吧。這裏咱們可能會使用到一些函數,好比說判斷是否是某SESSION變量爲空,能夠這麼寫:empty($_SESSION['inum'])返回true or false。html

下面綜合一下前面所說的咱們來看一個登錄程序,判斷用戶名密碼是否正確。
登錄表單是這樣: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>mysql

處理文件是這樣
<?
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>";
}linux

?>sql

conn.php是這樣:
<?
$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
?>數據庫

因爲 $_SESSION['adminname']=$username;咱們能夠這樣寫驗證是否登錄語句的文件:checkadmin.asp
<?
session_start();
if($_SESSION['adminname']=='')
{
echo "<script>alert('Please Login First');location.href='login.php';</script>";
}
?>安全

呵呵,今天說到這裏,明天說一下怎麼弄一個分頁服務器


學習目的:作一個分頁顯示session

關鍵就是用到了SQL語句中的limit來限定顯示的記錄從幾到幾。咱們須要一個記錄當前頁的變量$page,還須要總共的記錄數$numasp.net

對於$page若是沒有咱們就讓它=0,若是有<0就讓它也=0,若是超過了總的頁數就讓他=總的頁數。

$execc="select count(*) from tablename ";
$resultc=MySQL_query($execc);
$rsc=mysql_fetch_array($resultc);
$num=$rsc[0];

這樣能夠獲得記錄總數
ceil($num/10))若是一頁10記錄的話,這個就是總的頁數

因此能夠這麼寫
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;//由於page是從0開始的,因此要-1
}

這樣$exec能夠這麼寫 $exec="select * from tablename limit ".($page*10).",10";
//一頁是10記錄的

最後咱們須要作的就是幾個鏈接:
<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>

這是一個大體的思路,你們能夠想一想怎麼來優化?今天說到這裏,明天說一下一些注意的問題。



學習目的:注意事項

由於我是先學asp的,因此再作php的時候會發現不少地方須要適應。

一、注意不要漏了分號
二、注意不要漏了變量前的$
三、使用session的時候注意不要遺漏session_start();

若是發生錯誤的時候,能夠採用如下方法:
一、若是是SQL語句出錯,就註釋了而後輸出SQL語句,注意也要註釋調後續的執行SQL語句
二、若是是變量爲空,大可能是沒有傳遞到位,輸出變量檢查一下,檢查一下表單的id和name
三、若是是數據庫鏈接出錯,檢查是否正確打開MY SQL和是否遺漏了鏈接語句
四、注意縮進,排除括號不區配的錯誤

在作大網站的時候,個人思路是先構建數據庫,肯定每個字段的做用,和表之間的關係。而後設計後臺界面,從添加數據開始作起,由於添加是否成功能夠直接到數據庫裏面驗證,作好了添加再作顯示的頁面,最後纔是二者的結合。通常來講後臺就包括添加刪除修改和顯示,後臺沒有問題了,前臺也沒有什麼大問題。前臺還須要注意安全性和容錯還有就是輸出格式。

好了,今天說到這裏,明天說一下若是用PHP上傳文件和發郵件。



學習目的:學會用php上傳文件和發郵件

上傳文件表單必須加上 enctype="multipart/form-data"
和 <input type="file" name="file">
下面看一下代碼:

$f=&$HTTP_POST_FILES['file'];
$dest_dir='uploads';//設定上傳目錄
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我這裏設置文件名爲日期加上文件名避免重複
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//設定上傳的文件的屬性

上傳的文件名爲date("ymd")."_".$f['name'] ,能夠在之後插入到數據庫的時候用到,PHP其實是把你上傳的文件從臨時目錄移動到指定目錄。move_uploaded_file($f['tmp_name'],$dest);這是關鍵

至於發郵件就更加簡單,可使用mail()函數

mail("收件人地址","主題","正文","From:發件人\r\nReply-to:發件人的地址");

不過mail()須要服務器的支持,在WINDOWS下還須要配置SMTP服務器,通常來講外面的linux空間都行。
好像上傳文件和發郵件比asp簡單不少,只要調用函數就能夠了。ASP還須要用到服務器的不一樣組件好比fsojmail什麼的。

十天學會PHP說到這裏了,個人三大系列文章都用《十天學會》做爲名字,想告訴你們的是ASP,PHP,asp.net入門均可以是十天,可是精通決不是十天啊,還須要你們本身去研究。

相關文章
相關標籤/搜索