2012-07-14 2 views
0

Я ищу адрес электронной почты на моей странице просмотра. есть два способа, по которым электронная почта может туда добраться. Либо POST, либо СЕССИЯ. , если это $ _POST, тогда я хочу использовать почтовый адрес $ _POST другой, я хочу использовать электронное письмо, сохраненное в сеансе. В настоящее время код у меня есть нижекак это сделать, если еще в тройном операторе

$email = (isset($_POST['email']) ? $_POST['email'] : ''); 

Что лучший способ сделать это в наименее строк кода

+1

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

ответ

3

Я предполагаю, что вы просто ищете для этого (при условии, адрес электронной почты хранится в $_SESSION массив под ключом email):

$email = (isset($_POST['email']) ? $_POST['email'] : $_SESSION['email']); 

Или я недоразумение ваш вопрос?

+1

Обратите внимание, что '$ email' будет' NULL' вместо пустой строки, если не установлено ни одно из этих значений. Кроме того, если переменная сеанса не установлена, это приведет к появлению предупреждения в конфигурации по умолчанию. –

0

Попробуйте это:

$email = (isset($_POST['email']) ? $_POST['email'] : (isset($_SESSION['email'])) ? $_SESSION['email'] : ''); 

который так же из:

if(isset($_POST['email'])) { 
    $email = $_POST['email']; 
} else { 
    if(isset($_SESSION['email'])) { 
     $email = $_SESSION['email']; 
    } else { 
     $email = ''; 
    } 
} 
0

Забавная альтернатива правильному ответу @Gabriel Santos

$input = function($param, $default = '') { 
    static $input; 

    if (null === $input) { 
     $input = array_merge($_SESSION, $_POST); 
    } 

    return isset($input[$param]) ? $input[$param] : $default; 
}; 


// get input 
$email = $input('asd'); 
Смежные вопросы