PHP點點滴滴 一(我抄來滴,很是簡單的東西)

一、布爾值:false(0,空白,null);    true(-1,非0值);php

二、echo '$s'輸出內容是 $s;  
    若是""裏面包含了$s或者{$s},那麼將顯示的變量的值。推薦使用{$s}的方式。
    使用""時候,若是在""裏面還要使用"",就必須用\來轉義,例如: echo "<font>\"sss\"</font>";html

三、字符串鏈接:使用標點"."進行字符串鏈接。java

四、訪問字符串中的字符:經過在字符串以後用花括號指定所要字符從零開始的偏移量來訪問。
   strlen($str)   函數能夠獲取字符串長度。
   $str[0]  獲取字符串$str的第一個字符。
   substr('123456',5,1)   從第5個字符開始獲取一個字符,結果是「6」.
  
五、strval($s)將$s的值轉換成字符串,intval($s)將$s的值轉換成int整型數值。
   雙引號裏面使用雙引號:" a\"b "=a"b ;mysql

六、數組: (array 括號,逗號,=>)
   數組排序:sort($arr);
   定義:$arr=array(1=>'11','foo'=>'fffooo', 'info'=>array(2=>22,'ghost'=>'host')  );
   引用:$arr[1]  $arr['foo']  $arr['info'][2]  $arr['info']['ghost']
   count($arr)  獲取數組元素數量
   遍歷數組:$arr=array(1=>'111',2=>'222',3=>'333');
             foreach($arr as $k=>$v)
                    echo "{$k}_{$v}<br>"; //輸出:1_111  2_222  3_333ajax

七、對象sql

<?php
class foo
{
var $a='s';//類的變量!!數據庫

function init()  //類的函數
  {
   echo "Doing foo.";
   echo $this->a;  //引用類的變量!!
  }
}apache

$bar = new foo;
$bar->init();
?>
                   
  
八、變量
  
   isset($s)檢查變量是否已經設置,若是尚未設置就引用$s將致使php提示: Undefined variable。
  
   默認狀況下變量之間賦值是不會互相影響的(傳值賦值模式);
   若是是 $a="a"; $b=&$a  這種狀況下,$a和$b中任一個變量的值改動了,另一個變量的值也隨之變化(傳地址賦值模式)。
  
   PHP5的預約義變量:
   $_SERVER["REMOTE_ADDR"]  //獲取ip地址
   $_REQUEST[],$_GET[],$_POST[] //獲取提交的參數的值
   $_SESSION[],$_COOKIE[] 
   $_FILE[]
   $_ENV[]windows

九、常量
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
?>數組


十、運算符號

    /  取商,結果爲float型,經過(int)($a/$b)獲得整型商
    %  取餘,結果爲整型
   ==  是否恆等   
   !=  <>  不等於
   and && 與  or || 或  !非
   round($a) 四捨五入取$a的值
   floor($a) 捨去$a小數點後內容取整
   ceil($a)  進一法取整,返回不小於$a的下一個整數

十一、流程控制
   if()  {do it}
   elseif(){do it}
     else {do it}
  
   for($i=0;$i<$b;$++)
  
   swtich($a){
              case '1': do it;break;
              case '2': do it;break;
              default: do it;
             }

十二、函數
    function_exists(function name)  指定的函數是否存在;
    函數內引用全局變量: global $a;
    靜態變量:static $a只在函數內部編號;
    function show()
    { static $a=0;$a++;echo $a;}
    $a=10
    show();
    show();
    echo $a
    輸出結果:1,2,10

1三、類與對象

 

 

1四、圖像處理(須要GD庫支持)

檢查是否啓動了GD庫支持:if( function_exists(gd_info) )
gd_info()返回值是一個數組;
檢查GD庫版本:$ver=gd_info(); echo $k['GD Version'];

在x,y座標處新建圖像:$img=imagecrete(x,y)

爲圖像分配顏色:$color=imagecolorallocate($img,R,G,B)


發送圖片給瀏覽器;header("content-type;image/gif")  或者image/jgeg,image/png

顯示圖片;imagegif($img)   imagejpeg($img)    imagepng($img)  imagewbmp($img)

釋放內存: imagedestroy($img)


顯示文字; imagestring($img,int font,x,y,$str,$color)  若是 font 是 1,2,3,4 或 5,則使用內置字體。
劃線:imageline($img,x1,y1,x2,y2,$color);

 

1五、SESSION

session_start()   創建會話
$_SESSION['var']='kkk'    創建var會話變量並賦值
session_unset() 註銷已註冊session變量
session_unregister('var') 註銷session變量var

PHP後退頁面過時或不存在問題的解決:

post後或使用了使用了session都有可能引發這種狀況

解決辦法,在開頭加入以下代碼便可:

header("Cache-control: private");

 

一、最好是用include_once()而不要用include()函數;
   require_once()碰見錯誤則中止執行,include_once()提示後繼續執行;


二、empty($str)若是$str是0或者爲空都會返回true,因此$str最好不要有0


三、---------頁面轉向--------------------
"<scrīpt language=javascrīpt>alert('成功註銷會員')</scrīpt>
<meta http-equiv='refresh' content='0;url=searchMember.php'>"; 
固然header('location:URL')也能夠實現可是效果沒有上面的好!! 
可是要特別注意:header這個函數所在的頁面上在調用此函數前,不能有任何輸出!! 
-----------------------------


四、php代碼裏面嵌套html或者js代碼時候,最好用單引號而不要用雙引號!!


五、獲取頁面提交的參數:$_SERVER['REMOTE_ADDR'].$_SERVER[REQUEST_URI]


六、顯示本區時間:date_default_timezone_set('PRC');echo date("H:i:s");這樣纔是服務器的時間,若是不設置時區PHP5版本後顯示的時間就不是本地時間!!
   date("Ymd His")  顯示年月日時分秒

 

 

十、細線表格設計:單元格間距=1;表格背景色=你想要看見最終顯示出來的表格邊框色;單元格背景色=白色或者很淺的色系。
    豎線:表格列填充黑色,列寬度=1
    字體:14像素+宋體   style="width:80" 


十二、關於使用$_GET[]和$_POST[]獲取頁面變量:action='1.php?action=add'中應該用$_GET['action']來獲取action提交的值!!

處理radio單選組:因爲radio單選組的name都是同樣的,因此使用$_REQUEST["name"]就能夠獲取到單選的那個項的值value。
處理select下拉框(單選):因爲select單選組的name都是同樣的,因此使用$_REQUEST["name"]就能夠獲取到選擇的下拉項的值value。
處理select下拉框(多選):select下拉框命名必須爲name[]形式;
    $arr=$_REQUEST["name"];
    for($i=0;$i<count($arr);$i++)
        echo "{$arr[$i]}";
處理checkbox多選組(多選):checkbox多選組必須命名爲checkbox[]形式;
    $arr=$_REQUEST["checkbox"];
    for($i=0;$i<count($arr);$i++)
        echo "{$arr[$i]}";


1四、變量的引用,
    (condition)?action1:action2至關於if(condition) action1  else action2.
    funciton msg($j=0,$k=1,$l=3) 預約義參數值,若是參數不指定則用默認值,若是指定了就用指定值。

 

 

1七、htmlentities($_POST['$S'])將$S的內容中全部的特殊字符轉換成HTML表示方式。
全部會引發瀏覽器進行特殊處理的字符在進行了轉換後,就能確保顯示出來的是原來錄入的內容。


1八、-----------------頁面和代碼分離的一種模板(分htm和php)------------------


第1、php文件處理完全部的業務(control和model),查詢結果通常放到數組,而後htm文件裏面能夠直接調用數組變量。
php文件末尾必須include_once(htm文件)!!
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query))
{
  $catedb[]=$rs;
}

第2、htm文件只管顯示(view),寫代碼時候,使用  print <<<EOT 與  EOT;  搭配,    EOT;的前面必定不能留空格,必須頂格,切記切記。
例如:

<!--
if(!empty($catedb)) //$catedb是sql查詢的結果集
{
 foreach($catedb as $key=>$value)
 {
  print <<<EOT
-->
<ul><li>
 <a href="admin.php?job=sort&do=editwin&id={$key}#分類編輯"><b>{$value['name']}</b></a>
 <span class="smalltxt"> - 顯示順序: <input type="text" name="{$value['sid']}" value="{$value['vieworder']}" size="1"> -
 <a href="admin.php?job=sort&do=editwin&id={$key}#分類編輯">[編輯]</a>
 <a href="admin.php?job=sort&do=del&id={$value['sid']}">[刪除]</a>
 </span></li>
</ul>
<!--
EOT;(必須頂格)
 }
}
print <<<EOT
-->


第3、<!--  -->中,<?php ?>必須寫在最前面和最後面。
例如:
<!--
<?php
  print <<<EOT
-->
html代碼
html代碼
<!--
EOT;
  php代碼
print <<<EOT 
-->
html代碼
html代碼
<!--
EOT;
?>
-->

//------------------------------------------------

1九、數據庫操做

//鏈接數據庫
$link=@mysql_connect(host,usr,name) or die("erro message!!");
@mysql_close($link);

//選擇數據庫
$db=@mysql_select_db("db_name") or die("err:3");

//查詢
$sql="select * from db";
$result=@mysql_query($sql) or die("erro message!!");


//顯示查詢結果集
$result=@mysql_query("SELECT id, name FROM mytable");
while ( $row = @mysql_fetch_array($result)  )
 {
   printf ("ID: %s  Name: %s", $row[0], $row["name"]);
 }


//獲取查詢包含的記錄總數
mysql_num_rows($result)    返回select語句查詢結果的記錄總數。
mysql_affected_rows()      返回insert,delete,update等sql語句更新的記錄總數,注意此函數沒有參數!!。
mysql_num_fields($query)   返回select語句查詢結果的列(字段)總數。

//釋放查詢佔用的內存
mysql_free_result($result)


//事務操做

//修改記錄

 


mysql_array_rows($)和mysql_affected_rows()返回值必須>0纔算操做成功,
mysql_affected_rows())返回值多是-x負數,此時用if(mysql_affected_rows()))判斷也是返回true!!!

 

//------------------------------------------------

20、javascrīpt學習:

(1)、獲取表單的元素個數: form.elements.length
(2)、表單第(I-1)個元素的類型: form.elements[i].type="button"
(3)、表單元素的值:form.elements.value="";
(4)、複選框標記已經勾選:document.form.checkbox.checked=true
(5)、單選按鈕:document.form.radio.checked
(6)、Select的索引值:document.form.select.selectIndex
(7)、select的屬性:document.form.select.options[i].text;
                 document.form.select.options[i].value;
(8)、當前select的值:document.form.select.options[document.form.select.selectIndex].value;

 

//------------------------------------------------
2一、數組

$arr=array(1,2,3,4,5);
foreach($arr as $i=>$value)
    echo $arr[$i];

//打印數組詳細內容   print_r($array)
<?php
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
    print_r ($a);
?>

count($arr) 返回數組$arr的列的數目。

 

 

 

//-----------------文件操做----------------------------
<form enctype="multipart/form-data" action="" method="POST">
Send this file: <input name="myfile" type="file">

form必須有參數說明enctype="multipart/form-data"纔能有文件上傳功能。
設置了文件上傳功能後,php自動創建了全局變量$_FILES;

$_FILES['myfile']['name'] 客戶端機器文件的原名稱。

$_FILES['myfile']['type'] 文件的 MIME 類型,須要瀏覽器提供該信息的支持,例如「image/gif」。
if( $_FILES['fl']['type']=='image/jpeg' ) 只能上傳JPEG類型文件

$_FILES['myfile']['size'] 已上傳文件的大小,單位爲字節。(不可靠的數據)
判斷上傳文件大小 if(filesize($_FILES['attachment']['tmp_name'])>1024000)  (這樣判斷纔可靠)

$_FILES['myfile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名。

$_FILES['myfile']['error'] 和該文件上傳相關的錯誤代碼。

 


php文件上傳時候,windows系統下的文件路徑必須是用\\來作轉義表示\,例如'c:\\windows\\'而不是'c:\windows\',;

php處理文件上傳作法:文件被上傳結束後,默認地被存儲在了臨時目錄中,這時您必須將它從臨時目錄中刪除或移動到其它地方,
若是沒有,則會被刪除。也就是不論是否上傳成功,腳本執行完後臨時目錄裏的文件確定會被刪除。
因此在刪除以前要將它複製到其它位置,此時,纔算完成了咱們的上傳文件過程。

$file=$_FILES['fl']['name'];
$tmp=$_FILES['fl']['tmp_name'];
if(move_uploaded_file($tmp,'c:\\apache\\htdocs\\'.$file))
   echo 'upload file ok';
else
  echo 'upload file failse';

 

上傳多個文件:有了上面的認識,同時上傳多個文件也就不難作了。上傳多個文件是從PHP3.0.10版本開始被支持。
要完成它,只需文件名以數組形式表示便可:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
  <input name="myFile[]" type="file"><br>
  <input name="myFile[]" type="file"><br>
  <input type="submit" value="上傳多個文件">
</form>
假如咱們上傳了兩個文件:first.txt 和 second.gif。表單被提交後,
$_FILES["myFile"]["name"][0]、$_FILES["myFile"]["size"][0]分別指first.txt文件的名字和大小,
$_FILES["myFile"]["name"][1]、$_FILES["myFile"]["size"][1]分別指 second.gif 的文件名字和大小。
固然,$_FILES["myFile"]["tmp_name"]、$_FILES["myFile"]["type"]也一樣會產生。

 

bool is_uploaded_file ( string filename )
說明:若是 filename 所給出的文件是經過 HTTP POST 上傳的則返回 TRUE。這能夠用來確保惡意的用戶
沒法欺騙腳本去訪問本不能訪問的文件,例如 /etc/passwd。這種檢查顯得格外重要,若是上傳的文件有
可能會形成對用戶或本系統的其餘用戶顯示其內容的話。爲了能使 is_uploaded_file() 函數正常工做
必段指定相似於 $_FILES['userfile']['tmp_name'] 的變量,而在從客戶端上傳的
文件名 $_FILES['userfile']['name'] 不能正常運做。

<?php
 
  $old_filename = $_FILES['attachment']['tmp_name'];//得到上傳到服務器臨時目錄得文件的名稱;
  $new_filename = '/path/to/'.$_FILES['attachment']['name'];
  if (move_uploaded_file($old_filename, $new_filename))//移動上傳臨時文件到制定目錄
  {
    /* $old_filename is an uploaded file, and the move was successful. */
  }
  ?>

遍歷$mydir目錄下的文件和文件夾:
if($dirhandle=opendir($mydir))
  while( false!==($fi=readdir($dirhandle)) )  
       echo $fi.'<br>';
closedir($dirhandle);

 

2二、數學函數
$a / $b  若是除不盡,結果是浮點數。
$a % $b  取商;
ceil($a) 四捨五入取值$a;
floor($a) 只取$a的整數部分;


-----------------------------------------------------------------------------------------------
2三、php與OOP

--------------------class.php------------------------------------
class database
{
  public $num,$result;
 
  public function  query($sql)
  {
    $this->result=@mysql_query($sql) or die("err code 3: sql query fail") ;  
    return $this->result;  //返回查詢結果集
    @mysql_free_result($result) or die("err code 5: mysql_free_result() fail"); 
  }
 
  public function num_rows($sql)
  {
    $this->result=$this->query($sql);  //經過$this->query引用query函數. $this->result引用成員變量result!!
    $this->num=@mysql_num_rows($result) or die("err code 4: mysql_num_rows() fail"); 
    return $this->num;  //此函數返回查詢的結果數。
  }

}
--------------------test.php------------------------------------
<?php
include_once("class.php");
$conn=new database;

$sql="select * from user order by userAge";

echo $conn->num_rows($sql)."<br>";
 
?>

 

//-------------------php與Ajax------------------------------------
因爲jsvascrīpt採用UTF8編碼,在windows下采用ajax回送服務器的返回信息就會出現亂碼,
所以在windows下應用時,php處理頁面ajax請求的頁面必須包含:
header('Content-Type:text/html;charset=GB2312');這句話,不然php獲取的中文數據返回到
ajax的html界面將顯示亂碼。

 

//輸出xml

<?
require_once("conn.php");
header("Conten-Type:text/xml");
echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>";
echo "<menuitems>";
$result = mysql_db_query("myly","select * from myTable");
while($row = mysql_fetch_object($result)) {
echo "<item><species>".$row->name."</species>";
echo "<location><![CDATA[".$row->location."]]></location></item>";
}
echo "</menuitems>";
mysql_free_result($result);
mysql_close();
?>

//輸出xml------------------------------------------------------------------

<?phpheader("Conten-Type:text/xml");echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>";echo "<user><row>";for($i=0;$i<5;$i++)   {   $str="<col{$i}>{$i}</col{$i}>";   echo $str;   }echo "</row></user>";?>

相關文章
相關標籤/搜索