2016-07-09 23 views
-1

これは私の暗号化された形式のURLにいくつかのデータを渡す私のPHPコードです。暗号化されたデータをURLに渡し、PHPで復号化します

<?php 
$cancel = encrypt($_GET['id'] . '|' . hotel($_GET['id'], 'area') . '|' . $_GET['roomid']); 
<input type = "hidden" name = "cancel_return" value = "<?php echo ROOT_URL; ?>/canceled.php?data=<?php echo $cancel;?>" > 

これは私がURLデータをフェッチ次のページです:

$custom_decrypt = $_GET['data']; 
$res = decrypt($custom_decrypt); 
print_r($res); 

このコードの暗号化と復号化:

function encrypt($text){ 

     $salt = 'DFS65'; $key = md5($salt); 
     $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
     $encrypted = base64_encode($encrypted); return $encrypted; 

     } 

    function decrypt($text) { 
     $salt = 'DFS65'; 
     $key = md5($salt); 
     $data = base64_decode($text); 
     $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
     $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
    } 

が、私は、復号のために、この結果を得た:

3 =E j F 1tt 43a_ actionにする必要がありますŋQ4

+0

あなたは、< 'どこかにここに') '欠けているのphp $ =暗号化解除?($ _ GET [ 'ID']を。 '|' .hotel($ _ GET [ 'ID'] 'エリア') <?php echo ROOT_URL;?>/cancelled.php?data = <?php echo $ cancel; ';' ?> ">' –

+0

でも、同じ出力が得られます。 –

+0

あなたはopen sslを調べることができます。それはmcryptよりも優れたサポートをしています。 – Nitin

答えて

0

You errors:

  • 最初の行で、PHPスクリプトの不在PHP終了タグ?>
  • 値はinput値タグ
  • 受信ファイルのURLで渡す必要がありますパラメータはform
  • で渡す必要があります。名前パラメータ

ここでは固定コードです。これは、デバッグ用に変更するので、それをチェックし、ニーズ

index.phpのために更新されました:

<?php 

$_GET['id'] = '1'; 
$_GET['roomid'] = '2'; 

function encrypt($text){ 

    $salt = 'DFS65'; $key = md5($salt); 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
    $encrypted = base64_encode($encrypted); return $encrypted; 

} 

function decrypt($text) { 
    $salt = 'DFS65'; 
    $key = md5($salt); 
    $data = base64_decode($text); 
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
    $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
} 

?> 

<?php $cancel = encrypt($_GET['id']. '|'. $_GET['roomid']);?> 

<form action="/canceled.php" method="get"> 
<input type="input" readonly="readonly" name="data" value="<?php echo $cancel;?>"> 
<input type="submit" > 
</form> 

とcanceled.php

<?php 
function encrypt($text){ 

    $salt = 'DFS65'; $key = md5($salt); 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
    $encrypted = base64_encode($encrypted); return $encrypted; 

} 

function decrypt($text) { 
    $salt = 'DFS65'; 
    $key = md5($salt); 
    $data = base64_decode($text); 
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
    $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
} 



$custom_decrypt = $_GET['data']; 
$res = decrypt($custom_decrypt); 
print_r($res); 

出力:

1|2 
+0

エラーは間違ったフィールド名です( 'cancel_return 'の代わりに' $ _GET [' data '] ') –

+0

varのどの名前を決定するかはあなた次第です。私のスクリプトは単純化した例です –

0

は、あなたの入力を見てみましょう:

<input type="hidden" name="cancel_return" value="......."> 

入力フィールド名がcancel_returnですが、サーバー上で、あなたは未設定のプロパティを取得しようとしている:

実際にする必要があります
$custom_decrypt = $_GET['data']; 

$custom_decrypt = $_GET['cancel_return']; 

この($_GET['cancel_return'])は暗号化された値を返します。次に、値を復号化してparse_urlを使用して、復号化されたURLのクエリからdata値を取得できます。

$cancel_return = $_GET['cancel_return'];      // Get the CORRECT value sent from the client 
$cancel_return_url = parse_url($cancel_return);    // Parse the URL that was passed to the server and return its components 
parse_str($cancel_return_url['query'], $cancel_return_query); // Parse the parameters of the query string of the url 
echo decrypt($cancel_return_query['data']);     // decrypt the 'data' parameter of the query string 
関連する問題