-Hi,
I'm having trouble with B.I. Media Solutions Auction (phpprobid) , I'm getting the error message:

Fatal error: Cannot redeclare password_hash() in /home/betti397/public_html/includes/functions_login.php on line 147

I've been at it for hours.
I couldn't see any obvious errors in functions_login.php but then I'm not much good at PHP code.

Here is the file. I would greatly appreciate it if anyone could "spot the obvious error" for me:

<?
#################################################################
## B.I. Media Solutions v6.12                                                           ##
##-------------------------------------------------------------##
## Copyright ©2012 B.I. Media Solutions. All rights reserved.   ##
##-------------------------------------------------------------##
## (Mods-Store) -> Shopping Cart                                            ##
#################################################################

function login_user ($username, $password, $redirect_url = '', $admin_login = false)
{
    global $db, $setts, $signup_fee, $session;

    (array) $login_output = NULL;

    if ($admin_login) ## the spoofer login, we dont need to check for the password here
    {
        logout(false, false);

        $login_query = $db->query("SELECT user_id, username, active, approved, salt, payment_status, is_seller, mail_activated FROM " . DB_PREFIX . "users WHERE
            username='" . $username . "' LIMIT 0,1");
    }
    else
    {
        $salt = $db->get_sql_field("SELECT salt FROM " . DB_PREFIX . "users WHERE username='" . $username . "'", "salt");

        $password_hashed = password_hash($password, $salt);

        $password_old = substr(md5($password), 0, 30); ## added for backward compatibility (v5.25 and older versions)

        $login_query = $db->query("SELECT user_id, username, active, approved, salt, 
            payment_status, is_seller, mail_activated FROM " . DB_PREFIX . "users WHERE username='" . $username . "' AND 
            (password='" . $password_hashed . "' OR password='" . $password_old . "') LIMIT 0,1");
    }

    $is_login = $db->num_rows($login_query);

    $login_output['redirect_url'] = 'login.php?invalid_login=1';
    $login_output['user_exists'] = false;

    /**
     * Important: the redirect to activate_account.php only needs to happen if the signup fee wasnt paid.
     */

    if ($is_login)
    {
        $login_output = $db->fetch_array($login_query);
        $login_output['user_exists'] = true;

        $login_output['redirect_url'] = (!empty($redirect_url)) ? $redirect_url : 'index.php';

        $login_output['is_seller'] = ($setts['enable_private_site']) ? $login_output['is_seller'] : 1;

        ## add signup fee procedure here.
        $signup_result = $signup_fee->signup($login_output['user_id']);

        if ($login_output['active'] == 1 && $login_output['approved'] == 1 && $login_output['mail_activated'] == 1)
        {
            $login_output['active'] = 'Active';
            // now update all shopping carts from the temp session id to the session user id value
            $db->query("UPDATE " . DB_PREFIX . "shopping_carts SET 
                buyer_id=" . $login_output['user_id'] . " WHERE buyer_session_id='" . $session->value('buyer_session_id') . "' AND buyer_session_id!=''");
        }
        else if ($login_output['approved'] == 0 || $login_output['mail_activated'] == 0 || ($signup_result['amount']>0 && $login_output['payment_status'] != 'confirmed')) /* the signup fee wasnt paid, redirect to the payment page */
        {
            $login_output['active'] = null;
            $login_output['redirect_url'] = 'activate_account.php';

            // user_id and username wont be activated either, the user will need to log in again after making the signup fee payment
            $login_output['temp_user_id'] = $login_output['user_id'];
            $login_output['user_id'] = null;
            $login_output['username'] = null;
        }
        else /* means the user is suspended for whichever reason. Members area access is limited. */
        {
            $login_output['active'] = null;
            $login_output['redirect_url'] = 'members_area.php?page=account§ion=management';
        }

        ## need to fix the function here to see how it handles every situation.
    }

    return $login_output;
}

function login_admin ($username, $password, $pin_generated, $pin_submitted, $check_pin = true)
{
    global $db;

    (array) $login_output = NULL;

    $login_query = $db->query("SELECT * FROM " . DB_PREFIX . "admins WHERE
        username='" . $username . "' AND password='" . md5($password) . "' LIMIT 0,1");

    $is_login = $db->num_rows($login_query);

    if ($is_login)
    {
        $login_details = $db->fetch_array($login_query);

        $valid_pin = ($check_pin) ? check_pin($pin_generated, $pin_submitted) : true;

        if ($valid_pin)
        {
            $login_output['active'] = 'Active';
            $login_output['level'] = $login_details['level'];

            $update_last_login = $db->query("UPDATE " . DB_PREFIX . "admins SET
                date_lastlogin='" . CURRENT_TIME . "' WHERE id='" . $login_details['id'] . "'");
        }
    }

    return $login_output;
}

function logout ($logout_admin = false, $redirect = true)
{
    global $session;

    if ($logout_admin)
    {
        $session->unregister('adminarea');
        $session->unregister('adminlevel');
    }
    else
    {
        $session->unregister('membersarea');
        $session->unregister('username');
        $session->unregister('user_id');
        $session->unregister('is_seller');
        $session->unregister('rm_username');
        $session->unregister('login_store');
        $session->unregister('login_category');

        $session->unset_cookie('username_cookie');
    }

    if ($redirect)
    {
        header_redirect('index.php');
    }
}

function password_hash ($password, $salt)
{
    return md5(md5($password) . $salt);
}

function login_spoofer ($username, $admin_username, $admin_password)
{
    global $db;
    (array) $login_output = NULL;

    $login_query = $db->query("SELECT * FROM " . DB_PREFIX . "admins WHERE
        username='" . $admin_username . "' AND password='" . md5($admin_password) . "' AND level='1' LIMIT 0,1");

    $is_login = $db->num_rows($login_query);

    $login_output['admin_exists'] = false;
    if ($is_login)
    {
        $login_output = login_user($username, '', '', true);
        $login_output['admin_exists'] = true;
    }

    return $login_output;
}

?> 
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.