2010-06-21 75 views
0

我正在開發一個osCommerce項目,它可以在主服務器上訪問,但是當我嘗試訪問LOCALHOST上的項目的管理部分時,登錄頁面接受我登錄時,最好應該接受我的登錄名和重定向我的索引,PHP .. 下面是登錄腳本,我使用..我的項目管理員不在我的Localhost for PHP上工作

<?php 
    require('includes/application_top.php'); 

    if ($session_started == false) { 
    echo 'session not started'; 
    } 

    $error = false; 
    if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'process')) { 
    $email_address = tep_db_prepare_input($HTTP_POST_VARS['email_address']); 
    $password = tep_db_prepare_input($HTTP_POST_VARS['password']); 

// Check if email exists 
    $check_admin_query = tep_db_query("select admin_id as login_id, admin_groups_id as login_groups_id, admin_firstname as login_firstname, admin_email_address as login_email_address, admin_password as login_password, admin_modified as login_modified, admin_logdate as login_logdate, admin_lognum as login_lognum from " . TABLE_ADMIN . " where admin_email_address = '" . tep_db_input($email_address) . "'"); 
    if (!tep_db_num_rows($check_admin_query)) { 
     $HTTP_GET_VARS['login'] = 'fail'; 
    } else { 
     $check_admin = tep_db_fetch_array($check_admin_query); 

     //BOF code for cPanel installer - convert password to cre hash 
     $check_password = $check_admin['login_password']; 
     if (substr($check_password, 0, 8) == '_cPanel_'){ 
     $check_password = substr($check_password, 8); 
     $password_hash = tep_encrypt_password($check_password); 
     tep_db_query("UPDATE " . TABLE_ADMIN . " SET admin_password = '" . $password_hash . "'"); 
     $check_admin_query = tep_db_query("select admin_id as login_id, admin_groups_id as login_groups_id, admin_firstname as login_firstname, admin_email_address as login_email_address, admin_password as login_password, admin_modified as login_modified, admin_logdate as login_logdate, admin_lognum as login_lognum from " . TABLE_ADMIN . " where admin_email_address = '" . tep_db_input($email_address) . "'"); 
     $check_admin = tep_db_fetch_array($check_admin_query); 
     } 
     //EOF code for cPanel installer - convert password to cre hash 

     // Check that password is good 
     if (!tep_validate_password($password, $check_admin['login_password'])) { 
     $HTTP_GET_VARS['login'] = 'fail'; 
     } else { 
     if (tep_session_is_registered('password_forgotten')) { 
      tep_session_unregister('password_forgotten'); 
     } 

     $login_id = $check_admin['login_id']; 
     $login_groups_id = $check_admin[login_groups_id]; 
     $login_firstname = $check_admin['login_firstname']; 
     $login_email_address = $check_admin['login_email_address']; 
     $login_logdate = $check_admin['login_logdate']; 
     $login_lognum = $check_admin['login_lognum']; 
     $login_modified = $check_admin['login_modified']; 

     tep_session_register('login_id'); 
     tep_session_register('login_groups_id'); 
     tep_session_register('login_firstname'); 

     //$date_now = date('Ymd'); 
     tep_db_query("update " . TABLE_ADMIN . " set admin_logdate = now(), admin_lognum = admin_lognum+1 where admin_id = '" . $login_id . "'"); 

     if (($login_lognum == 0) || !($login_logdate) || ($login_email_address == '[email protected]') || ($login_modified == '0000-00-00 00:00:00')) { 
      tep_redirect(tep_href_link(FILENAME_ADMIN_ACCOUNT, '', 'SSL')); 
     } else { 
      tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'SSL')); 
     } 

     } 
    } 
    } 

    require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_LOGIN); 
    include('includes/functions/rss2html.php'); 
?> 

我試圖跟蹤問題,每當我用正確的電子郵件地址和密碼登錄它不給我「$ HTTP_GET_VARS ['動作']

有人可以指導我這裏有什麼問題?

根據初始REPLIES

我在我的本地主機啓用register_long_arrays並且在電子郵件地址和密碼的輸入錯誤的情況下工作得很好..

回答

2
變量

諸如HTTP_GET_VARS稱爲長陣列,和已被棄用 - 和可以被禁用。
查看register_long_arrays指令,關於此問題:可能它已在您的服務器上禁用?您可以使用$_GET超全局數組。

的一對夫婦引用,請參閱:


注:OS電子商務是一個很老的軟件,在此之前長期被developped數組已被棄用 - 這可能是爲什麼它們被使用......以及爲什麼可以在PHP的配置中啓用register_long_arrays指令。

當然,這不建議用於新軟件......但是如果您必須使用該軟件......它可能比替換$HTTP_GET_VARS的每個實例更容易。

+0

它們在我的本地 – 2010-06-21 11:30:28

+0

啓用我這一切變爲$ _GET,但仍然沒有工作 – 2010-06-21 12:00:33

0

$ HTTP_GET_VARS已過時並已棄用,請改用$ _GET。同樣適用於其他超全球:$ _POST,$ _REQUEST,$ _SERVER,$ _COOKIES,$ _FILES等

+0

我知道這件事情,我使用osCommersce V2的每一個地方,這些全局變量是顯着的,這不是我的代碼unables訪問 – 2010-06-21 11:28:50

0

嘗試$_GET['action']而不是$ HTTP_GET_VARS['action']。我建議你完全用$_GET代替$HTTP_GET_VARS

作爲PHP 5.0.0,長PHP 預定義的變量陣列可以是 禁用通過設置register_long_arrays 指令。

+0

只是可以肯定的問題,嘗試粘貼$ HTTP_GET_VARS = $ _GET;在你的腳本之上。 – cypher 2010-06-21 11:41:24

+0

我這一切變爲$ _GET,但仍然沒有工作 – 2010-06-21 12:01:13

+0

是否有任何錯誤報告呢?嘗試使用error_reporting(E_ALL | E_STRICT); – cypher 2010-06-21 12:08:54

0

從PHP 5.0.3開始,預定義的長陣列如HTTP_GET_VARS默認禁用。用這個代替:

$_GET['action']; 
+0

,但他們都在我的錯誤的電子郵件地址和密碼的嵌插活性,因此,這證明他們與我的代碼工作 – 2010-06-21 11:32:07

+0

我改變了這一切到$ _GET,但仍然無法正常工作 – 2010-06-21 11:59:16

相關問題