導航:首頁 > 編程語言 > php中的form怎麼用

php中的form怎麼用

發布時間:2022-07-30 05:41:14

1. thinkphp3.2.3 怎麼上傳form表單

上傳表單
在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交:
<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
注意,要使用上傳功能 你的表單需要設置 enctype="multipart/form-data"
多文件上傳支持
如果需要使用多個文件上傳,只需要修改表單,把
<input type='file' name='photo'>
改為
<input type='file' name='photo1'>
<input type='file' name='photo2'>
<input type='file' name='photo3'>
或者
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
兩種方式的多附件上傳系統的文件上傳類都可以自動識別。
上傳操作
ThinkPHP文件上傳操作使用Think\Upload類,假設前面的表單提交到當前控制器的upload方法,我們來看下upload方法的實現代碼:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功
$this->success('上傳成功!');
}
}
上傳類對圖片文件的上傳安全做了支持,如果企圖上傳非法的圖像文件,系統會提示 非法圖像文件。 為了更好的使用上傳功能,建議你的伺服器開啟finfo模塊支持
上傳參數
在上傳操作之前,我們可以對上傳的屬性進行一些設置,Upload類支持的屬性設置包括:
屬性描述
maxSize文件上傳的最大文件大小(以位元組為單位),0為不限大小
rootPath文件上傳保存的根路徑
savePath文件上傳的保存路徑(相對於根路徑)
saveName上傳文件的保存規則,支持數組和字元串方式定義
saveExt上傳文件的保存後綴,不設置的話使用原文件後綴
replace存在同名文件是否是覆蓋,默認為false
exts允許上傳的文件後綴(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
mimes允許上傳的文件類型(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
autoSub自動使用子目錄保存上傳文件 默認為true
subName子目錄創建方式,採用數組或者字元串方式定義
hash是否生成文件的hash編碼 默認為true
callback檢測文件是否存在回調,如果存在返迴文件信息數組
上面的屬性可以通過兩種方式傳入:
實例化傳入
我們可以在實例化的時候直接傳入參數數組,例如:
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);// 實例化上傳類
關於saveName和subName的使用後面我們會有詳細的描述。
動態賦值
支持在實例化後動態賦值上傳參數,例如:
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728;
$upload->rootPath = './Uploads/';
$upload->savePath = '';
$upload->saveName = array('uniqid','');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
上面的設置和實例化傳入的效果是一致的。
上傳文件信息
設置好上傳的參數後,就可以調用Think\Upload類的upload方法進行附件上傳,如果失敗,返回false,並且用getError方法獲取錯誤提示信息;如果上傳成功,就返回成功上傳的文件信息數組。
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename'];
}
}
每個文件信息又是一個記錄了下面信息的數組,包括:
屬性描述
key附件上傳的表單名稱
savepath上傳文件的保存路徑
name上傳文件的原始名稱
savename上傳文件的保存名稱
size上傳文件的大小
type上傳文件的MIME類型
ext上傳文件的後綴類型
md5上傳文件的md5哈希驗證字元串 僅當hash設置開啟後有效
sha1上傳文件的sha1哈希驗證字元串 僅當hash設置開啟後有效
文件上傳成功後,就可以使用這些文件信息來進行其他的數據操作,例如保存到當前數據表或者單獨的附件數據表。
例如,下面表示把上傳信息保存到數據表的欄位:
$model = M('Photo');
// 取得成功上傳的文件信息
$info = $upload->upload();
// 保存當前數據對象
$data['photo'] = $info[0]['savename'];
$data['create_time'] = NOW_TIME;
$model->add($data);
單文件上傳
upload方法支持多文件上傳,有時候,我們只需要上傳一個文件,就可以使用Upload類提供的uploadOne方法上傳單個文件,例如:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
// 上傳單個文件
$info = $upload->uploadOne($_FILES['photo1']);
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
echo $info['savepath'].$info['savename'];
}
}
uploadOne方法上傳成功後返回的文件信息和upload方法的區別是只有單個文件信息的一維數組。
上傳文件的命名規則
上傳文件的命名規則(saveName)用於確保文件不會產生沖突或者覆蓋的情況。命名規則的定義可以根據你的業務邏輯來調整,不是固定的。例如,如果你採用時間戳的方式來定義命名規范,那麼在同時上傳多個文件的時候可能產生沖突(因為同一秒內可以上傳多個文件),因此你需要根據你的業務需求來設置合適的上傳命名規則。這里順便來說下saveName參數的具體用法。
一、採用函數方式
如果傳入的字元串是一個函數名,那麼表示採用函數動態生成上傳文件名(不包括文件後綴),例如:
// 採用時間戳命名
$upload->saveName = 'time';
// 採用GUID序列命名
$upload->saveName = 'com_create_guid';
也可以採用用戶自定義函數
// 採用自定義函數命名
$upload->saveName = 'myfun';
默認的命名規則設置是採用uniqid函數生成一個唯一的字元串序列。
saveName的值支持數組和字元串兩種方式,如果是只有一個參數或者沒有參數的函數,直接使用字元串設置即可,如果需要傳入額外的參數,可以使用數組方式,例如:
// 採用date函數生成命名規則 傳入Y-m-d參數
$upload->saveName = array('date','Y-m-d');
// 如果有多個參數需要傳入的話 可以使用數組
$upload->saveName = array('myFun',array('__FILE__','val1','val2'));
如果需要使用上傳的原始文件名,可以採用__FILE__傳入,所以上面的定義規則,最終的結果是 myFun('上傳文件名','val1','val2')執行的結果。
二、直接設置上傳文件名
如果傳入的參數不是一個函數名,那麼就會直接當做是上傳文件名,例如:
$upload->saveName = time().'_'.mt_rand();
表示上傳的文件命名採用時間戳加一個隨機數的組合字元串方式。
當然,如果覺得有必要,你還可以固定設置一個上傳文件的命名規則,用於固定保存某個上傳文件。
$upload->saveName = 'ThinkPHP';
三、保持上傳文件名不變
如果你想保持上傳的文件名不變,那麼只需要設置命名規范為空即可,例如:
$upload->saveName = '';
一般來說不建議保持不變,因為會導致相同的文件名上傳後被覆蓋的情況。
子目錄保存
saveName只是用於設置文件的保存規則,不涉及到目錄,如果希望對上傳的文件分子目錄保存,可以設置autoSub和subName參數來完成,例如:
// 開啟子目錄保存 並以日期(格式為Ymd)為子目錄
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
可以使用自定義函數來保存,例如:
// 開啟子目錄保存 並調用自定義函數get_user_id生成子目錄
$upload->autoSub = true;
$upload->subName = 'get_user_id';
和saveName參數一樣,subName的定義可以採用數組和字元串的方式。
注意:如果get_user_id函數未定義的話,會直接以get_user_id字元串作為子目錄的名稱保存。
子目錄保存和文件命名規則可以結合使用。
上傳驅動
上傳類可以支持不同的環境,通過相應的上傳驅動來解決,默認情況下使用本地(Local)上傳驅動,當然,你還可以設置當前默認的上傳驅動類型,例如:
'FILE_UPLOAD_TYPE' => 'Ftp',
'UPLOAD_TYPE_CONFIG' => array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 ),
表示當前使用Ftp作為上傳類的驅動,上傳的文件會通過FTP傳到指定的遠程伺服器。
也可以在實例化上傳類的時候指定,例如:
$config = array(
'maxSize' = 3145728,
'rootPath' = './Uploads/',
'savePath' = '',
'saveName' = array('uniqid',''),
'exts' = array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' = true,
'subName' = array('date','Ymd'),
);
$ftpConfig = array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 );
$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 實例化上傳類
目前已經支持的上傳驅動包括Local、Ftp、Sae、Bcs、七牛和又拍雲等。

2. Php表單處理中可以使用〈form〉標簽的什麼特性來指定處理表單數據的文檔

你好.這個和PHP是沒有關系的,這個是html標簽的問題
在html標簽的form標簽中,可以使用action='你指定的PHP文件'來指定處理表單數據的文檔.

3. php中怎樣提交一個form表單不涉及到js代碼,純php的怎麼做請高人指點!

一點:form表單屬於html php只是用來將form表單提交上來的數據進行處理,插入資料庫等操作
新建一個html的form表單,然後提交到php頁面進行處理
html頁面,不過問價名後綴可以改成php
<form method="post" action="chuli.php">
<input type="text" name="username" />
<input type="password" name="pass" />
<input type="submit" value="點擊提交">
</form>
php處理頁面
<?php
$username=$_POST['username'];
$pass=$_POST['pass'];
echo "您的用戶名:".$username;
echo "您的密碼:".$pass;
?>
php處理頁面只是輸出了表單信息,這個頁面也可以進行其他處理。

4. 用php! html中的form表單怎樣連接到資料庫(點擊預約按鈕就傳到資料庫)

點擊按鈕就是提交表單 設置提交表單的php地址 然後在php處理傳過數據
自動辨認是否完成你可以通過ajax去操作 當ajax為成功返回就是未完成 返回了則完成 還可以在php設置各種狀態碼記錄返回的情況

5. php中的form傳值問題

echo 你用了單引號,單引號里不解析變數的值,

你可以網路一下單引號與雙引號的區別

echo'
<formmethod="post"action="confirmpage.php">
<inputtype="hidden"value="'.$row[1].'"name="number">
<buttontype="submit"value="立即接單"name="submit">立即接單</button>
</form>
';

改成這樣

6. PHP怎樣用form表單提交輸出傳來的值

看提交的方式是什麼 POST就用$_POST來獲取 get就用$_GET例如$_POST['name']

7. php怎麼在網頁輸入form的文本框內就能運行結果

<html>
<body>
<h1>九九乘法表</h1>
<form>
請輸入要查找的數:<inputtype="text"name="id"size='5'maxlength=5/>
<inputtype="submit"/>
</form>
<?php
$n=intval($_GET['id']);
for($i=1;$i<=$n;$i++){
for($j=1;$j<=$i;$j++)
echo"$j*$i=".$j*$i."";
echo"<br>";
}
?>
</body>
</html>

8. form表單的字元串 怎麼使用 php

下面的例子顯示了一個簡單的 HTML 表單,它包含兩個輸入欄位和一個提交按鈕:

實例

<html>

<body>


<form action="welcome.php" method="post">

Name: <input type="text" name="name"><br>

E-mail: <input type="text" name="email"><br>

<input type="submit">

</form>


</body>

</html>

運行實例

當用戶填寫此表單並點擊提交按鈕後,表單數據會發送到名為 "welcome.php" 的 PHP 文件供處理。表單數據是通過 HTTP POST 方法發送的。

如需顯示出被提交的數據,您可以簡單地輸出(echo)所有變數。"welcome.php" 文件是這樣的:

<html>

<body>


Welcome <?php echo $_POST["name"]; ?><br>

Your email address is: <?php echo $_POST["email"]; ?>


</body>

</html>

輸出:

Welcome John

Your email address is [email protected]

使用 HTTP GET 方法也能得到相同的結果:

實例

<html>

<body>


<form action="welcome_get.php" method="get">

Name: <input type="text" name="name"><br>

E-mail: <input type="text" name="email"><br>

<input type="submit">

</form>


</body>

</html>

運行實例

"welcome_get.php" 是這樣的:

<html>

<body>


Welcome <?php echo $_GET["name"]; ?><br>

Your email address is: <?php echo $_GET["email"]; ?>


</body>

</html>

上面的代碼很簡單。不過,最重要的內容被漏掉了。您需要對表單數據進行驗證,以防止腳本出現漏洞。

注意:在處理 PHP 表單時請關注安全!

本頁未包含任何錶單驗證程序,它只向我們展示如何發送並接收表單數據。

不過稍後的章節會為您講解如何提高 PHP 表單的安全性!對表單適當的安全驗證對於抵禦黑客攻擊和垃圾郵件非常重要!

GET vs. POST

GET 和 POST 都創建數組(例如,array( key => value, key2 => value2, key3 => value3, ...))。此數組包含鍵/值對,其中的鍵是表單控制項的名稱,而值是來自用戶的輸入數據。

GET 和 POST 被視作 $_GET 和 $_POST。它們是超全局變數,這意味著對它們的訪問無需考慮作用域 - 無需任何特殊代碼,您能夠從任何函數、類或文件訪問它們。

$_GET 是通過 URL 參數傳遞到當前腳本的變數數組。

$_POST 是通過 HTTP POST 傳遞到當前腳本的變數數組。

何時使用 GET?

通過 GET 方法從表單發送的信息對任何人都是可見的(所有變數名和值都顯示在 URL 中)。GET 對所發送信息的數量也有限制。限制在大於 2000 個字元。不過,由於變數顯示在 URL 中,把頁面添加到書簽中也更為方便。

GET 可用於發送非敏感的數據。

注釋:絕不能使用 GET 來發送密碼或其他敏感信息!

何時使用 POST?

通過 POST 方法從表單發送的信息對其他人是不可見的(所有名稱/值會被嵌入 HTTP 請求的主體中),並且對所發送信息的數量也無限制。

此外 POST 支持高階功能,比如在向伺服器上傳文件時進行 multi-part 二進制輸入。

不過,由於變數未顯示在 URL 中,也就無法將頁面添加到書簽。

9. php中form表單提交問題請教

把form後邊的onsubmit事件刪除,只保留a標簽的onclick事件中的submit就可以了。

10. php怎麼實現form提交表單並跳轉到action頁面

<form action="a.php" method="post" name="theForm" onsubmit="return validate();">
<table width="90%" id="general-table">
<tr>
<td class="narrow-label">{$lang.title}</td>
<td><input type="text" name="title" size ="40" maxlength="60" value="{$article.title|escape}" />{$lang.require_field}</td>
</tr>
<input type="submit" value="提交" class="button" />
</form>
這樣就可以的,不知道你是遇到了什麼無法執行的問題嗎?

閱讀全文

與php中的form怎麼用相關的資料

熱點內容
戰地聯盟3解壓密碼 瀏覽:803
s型命令 瀏覽:23
php年薪5年 瀏覽:67
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998