作者kerash (烽火連天依山盡)
看板PHP
標題Re: [請益] Curl的問題
時間Thu Feb 9 23:59:02 2012
※ 引述《sulddrea (David Harrison)》之銘言:
: 又要問問題了...
: 我想要讓會員註冊時,根據他們輸入的資訊同時去創建社團頁面自動創建。
: 我舉其中一格來當例子
: 輸入頁面:
: <input type=text name=AAA id=BBB >
: 然後是在<Form action>的地方放入我想接的Curl的連結嗎?
: ex: <Form action:www.xxx.com/curl.php
: method:post> ???
: 如果輸出頁面(就是CURL的目的地)的對應格子是:
: <input type="text" name="CCC" id="DDD" >
: 那Curl.php裡面要怎麼寫??
: 這樣嗎:
: $post_data['CCC'] = $_POST['AAA'];
: 謝謝><
其實依照你的問題,我先假設在同域名(或同空間)之下執行的動作
pageA: 填社團名稱
pageB: 接收處理頁面
pageC: 取得社團名稱並填寫資料
┌──┐ ┌─┐ ┌─┐
│ A │→│B│→│C│
└──┘ └─┘ └─┘
page A 中使用
<form method="post" action="pageB.php">
<input type="text" name="club" />
<input type="submit" value="送出" />
</form>
page B 接收到 club name 後
<?php
$club = $_POST["club"];
query("insert"); /// -- 自己補成 insert sql
header("Location: c.php");
?>
再來就是到 page C
<?php
$sql = "select"; // 撈資料
$ret = mysql_fetch_assoc(mysql_query($sql));
$clubname = $ret["club_name"];
echo $clubname;
?>
/////////////////
採用三頁的方式主要是以提交後先插入資料庫在撈出來
如此可以在 page C 中先確認 clubname 是否存在之類的
<?php if($clubname=="") { ... } ?>
但如果不要這麼麻煩,其實就採用兩頁
畢竟看開始的問題好像是先輸入社團名後的下一頁顯示輸入的名稱
這樣的話 page A 的 form 就可以直接送到 page C
<form method="post" action=
"pageC.php">
<input type="text" name="club" />
<input type="submit" value="送出" />
</form>
在 pageC 就接收 club
<?php
$clubname = $_POST["club"];
?>
這樣的好處是不需要先連資料庫也不用先做處理之類的
但如果是資料在其他 server ,本機只負責將 form post 過去
且又不想要跑出同域的話,那可以採用 post 的方式
(如果高興想在 onsubmit 時用 js 跑 ajax 我也不反對XD)
架構就變成
┌─┐ ┌─┐ ┌─┐
│A│→│B│┐ ┌→│C│
└─┘ └─┘│ ┌─┐└─┘
└→│X│
└─┘
A 一樣是填入資料後送到 page B
但 page B 才是寫跑 curl 的程式碼,而 X 則是負責接收處理
page B:
<?php
$clubname = $_POST["club"];
$curl = curl_init("x"); // 印象中要絕對路徑
curl_setopt($curl,CURLOPT_POST,1); // 採用 POST 送出
curl_setopt($curl,CURLOPT_POSTFIELDS,"club=".urlencode($clubname"));
// 這個 post 的值可以用 array 帶也可以用字串,但要加 urlencode
$ret = curl_exec($curl); // 執行 curl,取得回傳
curl_close($curl); // 關閉
header("Location: c.php");
?>
page X:
在這個檔案裏面就做存入資料庫的動作,如上面原本 B 的動作
那如果要給 page B 回應是否成功,可以用 echo 的方式
(例如我成功會回傳1,失敗回傳0,後面再接 msg)
page C 就一樣處理後續的動作
基本上我覺得第二個狀況應該比較符合你吧(只要兩頁, echo POST 即可那種)
但我其實沒很仔細看需求XD 所以看完如果有我說錯方向的部分請歡迎提出
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.186.193
推 sulddrea:好感動@O@! 我其實最有進展的就是第二種,直接action到創 02/10 00:09
→ sulddrea:社團頁面,所以第一面打好資料後,按下submit直接到該頁 02/10 00:10
→ sulddrea:並且對應的欄位也都填好了,但是只差我不會讓他自動按 02/10 00:11
→ sulddrea:enter...(而且有個很惱人的限制...第三面(創建面)不能編 02/10 00:12
→ sulddrea:輯(根本不知道他是哪一堆php頁面組成的...)所以才想說Cur 02/10 00:13
→ sulddrea:l好像最棒,因為會做第二種方法(直接填寫資料),並幫我按 02/10 00:14
→ sulddrea:enter... 02/10 00:15
→ kerash:那這樣的解釋還算能解決嗎@@? 我怕我會錯意就是了 02/10 00:22
推 sulddrea:我找到第三頁的php了...但是要讓他自動submit好像都要先 02/10 00:22
→ sulddrea:找到form的id(name),這個我找不到... 02/10 00:23
→ sulddrea:恩,非常感謝你@O@,我就照著你說的再去試試看囉! 02/10 00:24
→ sulddrea:最後一個小問題...HTML的表格裡面(不用到PHP)有辦法讓第 02/10 00:30
→ sulddrea:格的value=第一格+第二格輸入的value嗎? 02/10 00:32
→ sulddrea:<input type=text name=name3 value=['name1']+['name2'] 02/10 00:34
→ sulddrea:XD? 02/10 00:34
→ kerash:要這樣做就用JS,去判斷1跟2是否為數字 02/10 08:56
→ kerash:然後兩個相加後套入第三格就可以了:D 02/10 08:56
→ kerash:如果知道 submit 出去的值是甚麼,或許可以直接把值 02/10 08:56
→ kerash:用curl post 送到第三頁就可以了(還是我又理解錯了QQ) 02/10 08:57
→ sulddrea:<button name="execute" id="execute" type="submit"> 02/10 10:46
→ sulddrea:那顆按鈕長這樣! 02/10 10:47
→ sulddrea:JS@@ 可是那兩格都是文字唷 1:qwe 2:asd 3=qweasd @@ 02/10 10:48
→ kerash:他應該有用 form 包起來,form 裡面有 action 可以知道 02/10 10:55
→ kerash:post 出去的路徑。 02/10 10:55
→ kerash:另外如果不用比對數值的話,直接用JS把1跟2的內容用+串起來 02/10 10:55
→ kerash:就可以達到你的要求了 02/10 10:55