2012-05-21 3 views
0

У меня этот класс я делаю, что работает, если я сохраняю константы в коде класса, но я хотел получить к ним доступ из внешнего файла, который пользователь может прокомментировать или раскомментировать c постоянным значением.Как получить доступ к константам из внешнего обязательного файла в PHP?

он прекрасно работает таким образом, но я не хочу, чтобы пользователи рыться в коде:

class passwordStringHandler 
{ 

# const PWDALGO = 'md5'; 
# const PWDALGO = 'sha1'; 
# const PWDALGO = 'sha256'; 
# const PWDALGO = 'sha512'; 
const PWDALGO = 'whirlpool'; 

    /* THIS METHOD WILL CREATE THE SALTED USER PASSWORD HASH DEPENDING ON WHATS BEEN 
    DEFINED */ 

function createUsersPassword() 
{ 

$userspassword = 'Te$t1234'; 

$saltedpassword='';  

if ((defined('self::PWDALGO')) && (self::PWDALGO === 'md5')) 
{ 
    $saltedpassword = md5($userspassword . $this->pwdsalt); 
    echo("The salted md5 generated hash is: " . $saltedpassword . "<br>"); 
    return $saltedpassword; 

}elseif ((defined('self::PWDALGO')) && (self::PWDALGO === 'sha1')){ 
    $saltedpassword = sha1($userspassword . $this->pwdsalt); 
    echo("The salted sha1 generated hash is: " . $saltedpassword . "<br>"); 
    return $saltedpassword; 

}elseif ((defined('self::PWDALGO')) && (self::PWDALGO === 'sha256')){ 
    $saltedpassword = hash('sha256', $userspassword . $this->pwdsalt); 
    echo("The salted sha256 generated hash is: " . $saltedpassword . "<br>"); 
    return $saltedpassword; 

}elseif ((defined('self::PWDALGO')) && (self::PWDALGO === 'sha512')){ 
    $saltedpassword = hash('sha512', $userspassword . $this->pwdsalt); 
    echo("The salted sha512 generated hash is: " . $saltedpassword . "<br>"); 
    return $saltedpassword; 

}elseif ((defined('self::PWDALGO')) && (self::PWDALGO === 'whirlpool')){ 
    $saltedpassword = hash('whirlpool', $userspassword . $this->pwdsalt); 
    echo("The salted whirlpool generated hash is: " . $saltedpassword . "<br>"); 
    return $saltedpassword; 

} 

else 

    echo("No password algro is defined! Edit the [<strong>PWDALGO</strong>] options in the <strong>systemConfiguration.php</strong><br>"); 
    return false; 

} 

Это работает нормально, потому что закодирована в файл класса:

Я хочу его работа с использованием этого:

require ("../configs/systemConfiguration.php"); 
class passwordStringHandler 
{ 

Я постоянно получаю остальное в моем если/другое заявление, что не могу найти, если PWDALGO определена.

или таким образом

class passwordStringHandler 
{ 
require ("../configs/systemConfiguration.php"); 

Я не знаю, если это возможно, так как я получаю сообщение об ошибке, я не думаю, что вы можете включить или требуете файлов внутри рамки класса.

в будущем, если я получу это для работы, мне нужен сценарий установки, чтобы проверить сервер, чтобы узнать, какие типы шифрования доступны, и составить список пользователей для выбора предпочтительного метода шифрования, а затем установить он автоматически для них. и иметь возможность изменить метод шифрования позже с панели управления администратора.

+0

Что вы отредактировали на этом Джоне? –

+1

Просмотрите историю изменений, вы увидите все изменения там. – hakre

+0

нет полиморфизма? –

ответ

1

Похоже, что вы хотите, чтобы эти константы охватывали объекты (классы), а не ограничивались только классом passwordStringHandler.

Если это случае, я хотел бы предложить вам пойти с define() вместо const.

Как это:

systemconfiguration.php

define('PWDALGO', 'whirlpool'); 

passwordStringHandler.php

require ("../configs/systemConfiguration.php"); 

class passwordStringHandler 
{ 
    if ((defined('PWDALGO')) && (PWDALGO === 'md5')) 

Больше информации здесь: define() vs const

+0

Сообщите мне, если я неправильно понял вашу проблему. –

+0

Я пробовал то, что вы сказали в моей системе. Configuration.php: PWDALGO будет использоваться только для класса passwordStringHandler. Нигде он не будет использовать его, но я не хотел, чтобы конечный пользователь рушился через файл класса, чтобы установить его. но когда я делаю это так, как вы сказали, я получаю неопределенный постоянный PWDALGO, когда я делаю это self :: PWDALGO или $ this-> PWDALGO, он возвращается к моей другой части if/else stat. это должно быть простым для этого, почему у меня так много проблем с этим. –

+0

Я сделал то, что вы сказали, и все еще казалось, что это не сработало и спасибо за ссылку, которую я прочитал сегодня утром, и похоже, что у меня не было того, что я пытался сделать. –

 Смежные вопросы

  • Нет связанных вопросов^_^