我們在寫網頁,常常都會用到From表單傳遞資訊。通常我們都是一個一個接收,轉存處理。
|
<?php
$tempA=$_POST["A"];
$tempB=$_POST["B"];
?>
|
如果資訊只有一兩個當然沒什麼問題,但是如果前一個表單頁面,如果有超過10個欄位或是20個欄位的時後呢?一行一行加嗎?那不瘋掉才有鬼!
我寫了一個很簡單的處理程序。可以簡化這個動作。
|
<?php
foreach ($_POST as $key => $value) { $$key=$value; }
?>
|
當你加入這段,就不需要一個一個來轉存了。
下面附上一個比較完整的範例來說明:
|
<form action="inputgoods_process.php" method="post"> 商品編號:<input type="text" name="Goods_Serial_Numbers" maxlength="7"><BR/> 商品名稱:<input type="text" name="Goods_Title" maxlength="50"/><BR/> 商品單價:<input type="text" name="Goods_Price" /><BR/> 商品網址:<input type="text" name="Goods_Href" maxlength="128" /><BR/> 商品重量:<input type="text" name="Goods_weight" maxlength="7" /><BR/> 商品長度:<input type="text" name="Goods_length" maxlength="6" /><BR/> 商品寬度:<input type="text" name="Goods_widht" maxlength="6" /><BR/> 商品高度:<input type="text" name="Goods_height[]" maxlength="6" /><BR/> 商品高度:<input type="text" name="test[]" maxlength="6" /><BR/> 商品高度:<input type="text" name="test[]" maxlength="6" /><BR/> <input type="submit"> </form>
|
接收段的PHP程式
|
<?php
foreach ($_POST as $key => $value) { $$key=$value; }
echo $Goods_length;
echo $test[0];
echo test[1];
?>
|
他會將你在表單中入的Goods_length值值接顯示出來。不用在一行一行打 $Goods_length=$_POST["Goods_length"]。
當然在最下面的部分你會看到有兩個一樣名稱test[]。這個部分他也會轉存成陣列方式。
而GET的話,就是把上面$_POST的地方改成$_GET 即可。
這樣會不會有資安問題啊?
至少我覺得是不會! 因為這只是方便轉存。 轉存之後,還是要做處理! 譬如說把插入碼或是有人下了SQL語法挑出來。 這樣的動作只是方便你不用一個一個變數從新宣告去承接。 就把傳來的表單欄位名稱值接當作變數而已!
您好,Google到您這篇文章, 想請教$$key的$$是什麼作法呢?? 謝謝。
假設 $A="test"; $$A="1234"; 你echo $test;就會顯示1234