2010-11-30 6 views
0

ありがとうございます。私はこれを非常に詳細に書いています。だから、このメッセージの長さを見てパニックにならないでください。if else条件に基づく操作の転送

私はretrievefieldex11.29.2.56.phpと呼ばれるページを持っています。この問題のために考慮する必要があるフィールドは、IDフィールド(name = usersubmit)Key(name = key)フィールドです。ユーザーが自分のid(name = usersubmit)を入力し、この条件を使用してチェックしているキーフィールドにキー値を入力しなかった場合if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key'] == "")) retrievefieldex11.29.2.56と同じページに移動する必要があります.php。それは同じページにポストバックし、データベースからレコードを取得し、同じページに印刷する操作を実行するようにし、このために、私は

<form name="retrieve.php" action="retrievefieldex11.29.2.56.php" method="POST"> 

ステートメントを使用しています。

Database code to retrieve rows 
Print rows on the same page. 

ユーザーがIDフィールドとキーフィールドの両方に入力すると、このステートメントを使用して条件を確認しています。

else if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key'])) 

このページは、次の操作で実行される別のページにリダイレクトする必要があります。 Decryption.phpページで

header('Location: Decryption.php') ; 

$userId = $_POST['usersubmit'];

[COLOR = "赤" を以下のようにコードの一部であり、この値は、前のページからフェッチされていない。[/ COLOR ]。このページを前のページからフェッチする必要があります

残りをテーブルから値を取得するためのデータベースコード。

私の問題は、ユーザーが自分のIDを入力してキーフィールドを入力していない部分をテストしているときに、データベース操作が実行されているということです。しかし、ユーザーが自分のIDとキーを入力すると[COLOR = "Red"]私はDecryptionページにリダイレクトされますが、ID値(name = usersubmit [/ COLOR])は前のページからDecryptionページ。どのように私はこれを対処するのですか?

私はそれが理に適ったと思います。この全体のプログラムを一緒に見ると、私の全面的な問題はさらに意味をなさないでしょう。助けてください。前もって感謝します。

合計コード

<html> 
<head> 
</head> 

<body> 
<form name="retrieve.php" action="retrievefieldex11.29.2.56.php" method="POST"> 
Enter your ID<input name="usersubmit" type="text"> <br> 

<table><tr> 
<td><b>Key size in bits: </b></td> 

<td><select name="keySize"> 
<option value="128" selected="selected">128</option> 
<option value="192">192</option> 
<option value="256">256</option> 
</select></td> 
</tr> 

<tr> 
<td><b>Key in hex: </b></td> 
<td><input type="text" size="66" name="key"></td></tr> 

<tr> 
<td><b>Ciphertext in hex: </b></td> 
<td><input type="text" size="66" name="ciphertext"></td> 

</tr> 


</table> 
<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("encryption") or die(mysql_error()); 
$userId = $_POST['usersubmit']; 
if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key'] == "")) 
{ 

$query = mysql_query("select * from employee_details where id = '$userId'"); 
    if($row=mysql_fetch_assoc($query)) 
    { 
    echo '<tr>'; 
    foreach($row as $value) 
    echo '<td>'.$value.'</td>'; 
    echo '</tr>'; 
    } 
    else 
    echo "No rows returned"; 
    } 
else if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key'])) 
{ 


    header('Location: Decryption.php') ; 

In decryption page 

<?php 
/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
mysql_connect("localhost","root",""); 
mysql_select_db("encryption") or die(mysql_error()); 
$userId = $_POST['usersubmit']; 
$columname = "ciphertext"; 
$tablename = "employee_details"; 

function getField($field, $tbl_name, $condition) 
{ 

$result = mysql_query("SELECT $field FROM $tbl_name WHERE id = ".$condition); 
return @mysql_result($result, 0); 
} 

$myValue = getField($columname,$tablename,$userId); 
echo "$myValue"; 
echo "<br>"; 

?> 


} 



?> 
<br> 
<input name="submit" type="submit" value="Submit"><table> 
</table> 
</form> 
</body> 
</html> 
+0

これを達成するために使用しているコードを投稿できますか? – martynthewolf

+0

既に投稿されているmartswite ...私は文字の制限のためにコメントとして全体のコードを再び投稿することができません。あなたが投稿された元の質問でそれを見ることができるかどうか私に教えてください? – ilearnphpbeginner

答えて

0

あなたが場所ヘッダーを送信する場合、ブラウザはそのURIに対してGETリクエストを送信し、それが最後の要求から任意のデータを再送信しません。 新しい場所として送信するURLに、POSTされたデータをGETパラメータとして追加する方法があります。もちろん、Decryption.phpを$_GETに変更する必要があります。 別の解決策:場所ヘッダーを送信する代わりに、スクリプト内にDecryption.phpを含めてください。

+0

したがって、フォーム属性にはすでにアクションが現在のページに設定されている場合、GET Hereをどのように使用しますか? get属性は他のページに直接掲載されることはありませんか? – ilearnphpbeginner

+0

私が持っていたもう1つの質問は、どのように復号化だけを含めるかということです。スクリプトのPHP?私はちょっと新しいPHPに慣れているので、どんな洞察も助けてくれるはずです。ありがとうございます。 – ilearnphpbeginner

+0

header( 'Location:decryption.php')を使ってGETでこのURLを要求するようブラウザに指示するので、今はdecryption.phpに$ _POST ['anything']はありません。必要なデータをGETパラメータとして含めるようにヘッダー行を変更するか、 'location:decryption.php?usersubmit ='。urlencode($ _ POST ['usersubmit']) - しかし、decryption.phpで$ _POSTを$ _GETに置き換えるか、header()の呼び出しを "include 'decryption.php'; " (二重引用符なし)。 http://php.net/manual/en/function.include.phpを参照してください。 – rik