2011-12-20 12 views
0

私はテキスト入力フィールドを持つhtmlフォームを持っています。私はフォームから特定の入力を認識する方法を知っています。例入力コマンド:要求データをretriveするPHP:pregmatch入​​力フィールド

$request = $_POST['action']; 

$split = explode(' ',$request,2); 
$command = $split[0]; 

if(!isset($split[1])){ 
    //no url 
    die; 
} 

$url = $split[1]; 

if($command == "goto"){ 

    header('location: '.$url); 
    die; 

}elseif($command == "bookmark"){ 

    header('location: '.$url); 
    die; 

}else{ 

    echo 'No Commands :('; 

} 

使用$_POST$_GET

<input type="text" name="action" value="bookmark http://google.com" /> 
<?php 
     if ($command == "goto"): 
     // go to website X 
     elseif ($command == "bookmark"): 
     // bookmark website X 
     else: 
     // something else 
     endif; 
?> 

答えて

2

に役立ちます願っています。 explode()の "2"パラメータは、必要に応じてスペースを$ paramで使用できるようにします。

$input = explode(' ', $_POST['action'], 2); 
$command = $input[0]; 
$param = $input[1]; 

switch ($command) { 
    case 'goto': 
     // go to website $param 
     break; 
    case 'bookmark': 
     // bookmark website $param 
     break; 
    default: 
     // unknown command 
} 
+0

あなたの答えをありがとう! –

0

はこれを試してみてください。すなわち:$_GET['action']

ブラウザをリダイレクトするようにヘッダーの場所を設定します。 die;またはexit;

+0

$ _POST [「行動」]は更新のために少し余分な –

+0

は「後藤」は「後藤{URL}」になることはありません! –

+0

おかげで:)に合わせて更新例 –

0
$aAct = explode(' ', $_POST['action'); 
if(is_array($aAct)) { 
    switch($aAct[0]) { 
     case 'bookmark': 
      /* do action e.g. header('Location: ' . $aAct[1]); */ 
     break; 
    } 
} 

現在のスクリプトを終了して出力するために使用され、指定しようとするすべてのアクションのためのケース/ブレーク組み合わせを作る。..このような

0

何かが

//get the command from your value 
$command = current(explode(" ", $_POST['action'])); 

//get the url from your value 
$url  = next(explode(" ", $_POST['action'])); 

を?:そしてkarim79で述べたように、入力を処理するスイッチがより適切でしょう。

switch($command) { 

    case 'goto': 
     // do stuff with $url; 
     break; 
    case 'bookmark': 
     // do stuff with $url; 
     break; 
    default: // do something default; 
} 

は、それは私が最も簡単な方法は、コマンドとそのコマンドのパラメータにそれを分離するために最初のスペースに文字列を分割することだと思います

関連する問題