各位大大好:
想請問
a.php
<li ><a href="a.php?category=sign">報名</a></li>
<?php
$pageTitle ="null";
if(isset($_GET["category"])) {
if ($_GET["category"] == 'sign') {
$pageTitle = file_get_contents('http://www.xx.xx.xx.tw/EExx2019/sign.php');
}
else if ($_GET["category"] == 'sign_cmf') {
$pageTitle = file_get_contents('http://www.xx.xx.xx.tw/EExx2019/sign_cmf.php');
}
}
echo $pageTitle;
?>
在http://www.xx.xx.xx.tw/EExx2019/a.php?category=sign 表單要送出資料給http://www.xx.xx.xx.tw/EExx2019/a.php?category=sign_cmf
sign.php
<form method="POST" action="a.php?category=sign_cmf" name="f1">
sign_cmf.php
<div class="form-group col-md-6">
<label for="recipient-name" class="col-form-label" >姓名※:<?php echo $_POST['name'] ?></label>
</div>
sign_cmf網頁會顯示值有誤,產生姓名※:Notice: Undefined index: name in D:\eexx\EExx2019\sign_cmf.php on line 17
好像替換網址,值會傳不過去,想請問有甚麼方法可以解決呢?
謝謝!
a.php?category=sign
POST 到 a.php?category=sign_cmf
你在 a.php
裡面又根據 $_GET["category"]
去執行 file_get_contents("http://.../sign_cmf.php")
最後你說 sign_cmf.php
無法讀取 $_POST
,那不是理所當然的嗎?
get_file_contents
是送出 GET
請求,你等於是在收到 HTTP POST
之後又發起了另一個 HTTP GET
,它並不會自動把你目前的 $_POST
資料轉送過去。
從根本上來講這整個執行流程就是充滿問號,完全不懂你為啥要另外送一個 HTTP Request,直接 include "sign_cmf.php"
不就好了嗎?
w大您好:
因為a.php有寫一些語法讓外觀跟menu比較好看所以想說直接action="a.php?category=sign_cmf"所以post 跟get 無法同時存在嗎?
可以同時存在啊, 但你的問題不在這裡, 而是你去讀取 sign_cmf.php
的時候是發了另一個 GET Request, 沒有把 POST 資料送過去
你想過為什麼要用 file_get_contents
嗎? 直接 include
不好嗎?
有點看不太懂你的問題,
如果你只是單純要在a.php,做報名的資料傳遞,在同樣頁面藉由get參數不同,來顯示頁面資料的話,這樣一個a.PHP就可以解決。
<li ><a href="a.php?category=sign">報名</a></li>
<?php
$pageTitle ="null";
if(isset($_GET["category"])) {
if ($_GET["category"] == 'sign') {
$pageTitle =
'<form method="POST" action="a.php?category=sign_cmf">
<input type="hidden" name="myname1" id="myname1" value="hiddenName">
<input type="text" name="myname2" id="myname2">
<input type="submit" value="送出">
</form>';
}
else if ($_GET["category"] == 'sign_cmf') {
$pageTitle =
'<div class="form-group col-md-6">'.
'<label for="recipient-name" class="col-form-label" >'.
'隱藏的 myname1※:'.$_POST["myname1"]."<br>".
'自己輸入的myname2※:'.$_POST["myname2"]."<br>".
'</label></div>';
}
}
echo '<BR>'.$pageTitle;
?>
你上面寫的這個
sign.php<form method="POST" action="a.php?category=sign_cmf" name="f1">
如果你是要傳遞給a.php?category=sign_cmf
$_POST['name']這個參數,你需要有一個欄位,用來記錄這個資料跟對應的值。
<form method="POST" action="a.php?category=sign_cmf">
<input type="text" name="name" id="name">
<input type="submit" value="送出">
</form>
寫法應該是這樣。
應該是他的form
寫法有問題沒錯
f大您好:
這個我有寫了,但是傳給a.php?category=sign_cmf
a.php?category=sign_cmf網頁的每個傳遞值會產生
Notice: Undefined index: name in D:\eexx\EExx2019\sign_cmf.php on line 17
若是傳給sign_cmf.php 就會正常..
如果你是要傳遞給a.php?category=sign_cmf
$_POST['name']這個參數,你需要有一個欄位,用來記錄這個資料跟對應的值。
若是傳給sign_cmf.php 就會正常.. <-這應該是相反的吧?
這樣的寫法應該是錯的<form method="POST" action="a.php?category=sign_cmf" name="f1">
sign_cmf.php檔案裡面應該是沒有收到$_POST['name']參數,所以才會跳出錯誤。
Notice: Undefined index: name
這個就是說,他不知道$_POST['name']指的name是什麼意思。
所以你在表單需要寫一個<input type="text" name="name" id="name">
這樣寫正常
<form method="POST" action="sign_cmf.php" name="f1">
這樣寫錯誤
<form method="POST" action="a.php?category=sign_cmf" name="f1">
我覺得會不會是因為原始檔案就是sign_cmf.php,所以$_POST['name']
可以讀,改網址後(a.php?category=sign_cmf)就不行..
你上面這樣寫就是直接傳到sign_cmf.php 這個檔案,跟a.php就完全沒關係。
action="a.php?category=sign_cmf" 這是指說,我傳到a.php檔案,a.php檔案再去藉由參數判斷不同檔案。
action="sign_cmf.php" 直接到sign_cmf.php 檔案,
你在sign_cmf.php 如果程式碼只有這樣:
<div class="form-group col-md-6">
<label for="recipient-name" class="col-form-label" >姓名※:<?php echo $_POST['myname'] ?></label>
</div>
那應該也會出現錯誤
雖說知識不用深究,但基本了解還是要有的,幾個部份先釐清吧…
2.一般不會在form上寫name這個屬性,寫name屬性是指要傳值,如對應$_POST['f1'],但form上面不會有value這個屬性,如想傳值又不想顯示在畫面上,可以用
<input type="hidden" name="category" value="sign_cmf">
這種方式,而不是放在url上面,雖然get和post是可以同時傳到後端的,但沒有特殊需求,一般都會寫在form裡以簡化url,請參考:http://www.webtech.tw/info.php?tid=96
你的例子:
sign.php
<form method="POST" action="a.php?category=sign_cmf" name="f1">
3.所以如果你要傳到sign_cmf.php 和 sign.php,讓它避免出現Notice: Undefined index: name in ,就是要加上:
<input type="text" name="name" value="你要傳的值">
1.應該是後者
2.剛剛有試過cc大的方式還是不行
3.還是說要將a.php的語法全部寫在sign_cmf.php這應該是比較快的方式@ @
請參考上面作法~
我有在 sign.php加上<input type="text" name="name">
因為是輸入欄所以沒加value,然後用第2點傳遞值到sign_cmf.php但還是無法傳值過去..謝謝
你是a.php 要傳到 sign_cmf.php吧,那應該是在a.php加才對,如果不是,請問到底是哪個頁面要傳到哪個頁面,先說清楚吧…
我是透過a.php去抓取sign.php(網址會變a.php?category=sign)表單然後透過post到a.php?category=sign_cmf(從a.php去解析category=sign_cmf轉換到sign.php)確認表單的資料,所以我在sign.php加這段後姓名的輸入值還是無法傳遞,這樣應該沒錯吧?
<form method="POST" action="a.php">
<input type="hidden" name="category" value="sign_cmf">
姓名:<input type="text" name="name">
我是透過a.php去抓取sign.php,那用a include sign.php就好,為何要弄成這樣?如果沒有弄懂就不該亂用
你應該沒弄清楚前端後端的關係,你原本的CODE看起來是:
a.php=>檢查GET['category'],如果是sig,那段顯示sign.php裡,如果是sign_cmf,顯示sign_cmf.php。
但是你要的是:
a.php=>sign.php=>sign_cmf.php
對吧?
F大您好,其實我要的是第一個你寫的,因為我需要其他a.php的語法
若用第2個那sign_cmf.php就無法讀到a.php語法了..謝謝