0

現在、このコードを使用して、イントラネットサーバーから.xlsファイルにハイパーリンクを生成しています。

この.xlsファイルは、サプライヤの1つに電子メールで送信する注文です。

/* WEBSERVER1 */  
$ORDER=$_GET['ORDER'];
$EZAB=$_GET['EZAB'];
$IP=$_GET['IP'];

$ARRAY = array(
    "ORDER" => $ORDER,
    "EZAB" => $EZAB,
    "IP" => $IP);

$SERIAL=serialize($ARRAY);
$q=base64_encode($SERIAL);
$URL="http://mywebsite/?q=".$q
$EXCELHYPERLINK='=hyperlink("'.$URL.'")';

元の電子メールに返信するのではなく、サプライヤに.xlsファイルのリンクをクリックして注文が処理されたことを確認してもらいたい。

イントラネットサーバーに外部からアクセスできないため、リンクは次のコードをホストしているWebサーバーを指しています。

/* WEBSERVER2 */
$q=$_GET['q'];
$SERIAL=base64_decode($q);
$ARRAY=unserialize($SERIAL);
// Do something...

私はむしろデータベースを使用したくない。

「$KEY」の内容を簡単に見つけられないようにする方法について何か考えがありますか?

4

1 に答える 1

2

mcryptを使用すると、GETを介して送信されるデータを暗号化できます。(@ dAm2Kに感謝します)

base64_encodeは、( "+"、 "/"、および "="文字)を含むため、暗号化された日付URLをわかりやすくするのに十分ではありません(@DavidThomasに感謝)

str_replaceを使用してこれらの3文字を置き換えましたが、すべて正常に機能しています。

イントラネットサーバーの修正されたコードは次のとおりです。

/* WEBSERVER1 */  
$ORDER=$_GET['ORDER'];
$EZAB=$_GET['EZAB'];
$IP=$_GET['IP'];

$ARRAY = array(
    "ORDER" => $ORDER,
    "EZAB" => $EZAB,
    "IP" => $IP);

$SERIAL=serialize($ARRAY);
$M=mcrypt_module_open('rijndael-256','','cbc','');
$KEY=md5("gi7aesawde2zomspgo8guvivmer8oici");
$IV=md5("dob1depatodop7lipdaig7bebeaion9d");
mcrypt_generic_init($M,$KEY,$IV);
$ENCRYPTEDDATA=mcrypt_generic($M,$SERIAL);
mcrypt_generic_deinit($M);
mcrypt_module_close($M);
$q=base64_encode($ENCRYPTEDDATA);
$q=str_replace(array('+','/','='),array('-','_','.'),$q);

$URL="http://mywebsite/?q=".$q;
$EXCELHYPERLINK='=hyperlink("'.$URL.'")';

およびWebサーバーの場合:

/* WEBSERVER2 */
$q=$_GET['q'];
$q=str_replace(array('-','_','.'),array('+','/','='),$q);
$ENCRYPTEDDATA=base64_decode($q);
$M=mcrypt_module_open('rijndael-256','','cbc','');
$KEY=md5("gi7aesawde2zomspgo8guvivmer8oici");
$IV=md5("dob1depatodop7lipdaig7bebeaion9d");
mcrypt_generic_init($M,$KEY,$IV);
$SERIAL=mdecrypt_generic($M,$ENCRYPTEDDATA);
mcrypt_generic_deinit($M);
mcrypt_module_close($M);
$ARRAY=unserialize($SERIAL);

// Do something...
于 2012-05-30T09:48:16.290 に答える