2011-05-23 59 views
8

UPDATEPHP重定向拿着劇本

我發現,阻礙了我的劇本的問題。顯然它與解密無關,但我的重定向。當我刪除這段代碼時,腳本開始快速執行。仍然不確定爲什麼這是造成這個問題?

// Make sure we have an Order ID 
if(! isset($_GET['id']) && ! isset($_POST['id'])) { 
    header("Location: https://www.website.com/orders/"); 
    exit; 
} 

原題:

我一直在使用這裏找到加密類:Encryption class。我將數據存儲在MySQL數據庫中,並使用VARCHAR二進制數據類型(以前我嘗試過BLOB和TINYBLOB)。

加密和解密兩個工作,但它需要1分鐘解密。加密速度很快。

我想我也應該說這是通過https連接發生的(如果相關的話)。

我不記得它總是花這麼長時間來解密。你有什麼想法可能會造成這種情況?當我註釋掉PHP代碼的解密部分時,只是回顯加密的字符串,它會很快執行。

代碼,下面請評論

class Encryption 
{ 
    const CYPHER = 'blowfish'; 
    const MODE = 'cfb'; 
    const KEY = 'MyPersonalKey'; 

    public function encrypt($plaintext) 
    { 
     $td = mcrypt_module_open(self::CYPHER, '', self::MODE, ''); 
     $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
     mcrypt_generic_init($td, self::KEY, $iv); 
     $crypttext = mcrypt_generic($td, $plaintext); 
     mcrypt_generic_deinit($td); 
     return $iv.$crypttext; 
    } 

    public function decrypt($crypttext) 
    { 
     $plaintext = ''; 
     $td  = mcrypt_module_open(self::CYPHER, '', self::MODE, ''); 
     $ivsize = mcrypt_enc_get_iv_size($td); 
     $iv  = substr($crypttext, 0, $ivsize); 
     $crypttext = substr($crypttext, $ivsize); 
     if ($iv) 
     { 
      mcrypt_generic_init($td, self::KEY, $iv); 
      $plaintext = mdecrypt_generic($td, $crypttext); 
     } 

     return $plaintext; 
    } 
} 

在這裏是一個網頁,我在那裏設置變量從MySQL行的代碼。我正在使用WordPress'$ wpdb對象。

$order = $wpdb->get_row("SELECT * FROM orders WHERE id = ".$order_id." LIMIT 0,1"); 

$addons_price =  $order->addons_price; 
$hooked_package = (isset($_GET['hooked_package'])) ? $_GET['hooked_package'] : $order->hooked_package; 
$arrival_date_unix = $order->arrival_date_unix; 
$order_data =  unserialize($order->order_data); 
$preview_total =  $order_data['preview_price'] + $addons_price + $order_data['travel_insurance']; 
$normal_total =  $order_data['normal_price'] + $addons_price + $order_data['travel_insurance']; 
$package_price =  $order->package_price; 
$total_price =  $order->total_price; 
$billing_cc =  Encryption::decrypt($order->billing_cc); 

而且,這裏是MySQL類型...

`billing_cc` varbinary(255) DEFAULT NULL 
+1

你能告訴我們一些代碼,尤其是「解密」過程前後的幾行代碼嗎? – 2011-05-23 16:06:57

+3

嘗試添加,然後在解密函數的每一行中移動一個「die('停在行x')」語句。將該函數向下移動,直到您確切地分離哪個mcrypt調用較慢。 – 2011-05-23 16:47:08

+0

我在這個班級看不到任何問題,你有很長的鑰匙嗎?這可能是緩解密碼的一個因素 – 2011-05-23 16:47:14

回答

1

你指明爲你的問題的代碼是一個簡單的條件重定向。所以它不應該與解密有關。我可以看到重定向緩慢的唯一原因是Web服務器負載沉重,連接速度慢或者存在其他性能問題。

+0

是的,對於混亂感到抱歉。我明白代碼的含義。但是,我發現解密畢竟不是造成滯後的原因。一旦我刪除了重定向代碼塊,腳本運行得很快。不知道爲什麼。 – 2011-05-24 14:04:14