Вот решение, но я не знаю, является ли это лучшим....
Select
Coalesce(Case When Len(listing.Offer_Text) = 0 Then Null Else listing.Offer_Text End, company.Offer_Text, '') As Offer_Text,
from tbl_directorylisting listing
Inner Join tbl_companymaster company
On listing.company_id= company.company_id
Это не идеальное решение, но вот быстрый и грязный пример, который показывает, как вы можете сохранить информацию для входа в PHP-код :
<?php
session_start();
$userinfo = array(
'user1'=>'password1',
'user2'=>'password2'
);
if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location: ' . $_SERVER['PHP_SELF']);
}
if(isset($_POST['username'])) {
if($userinfo[$_POST['username']] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'];
}else {
//Invalid Login
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
</head>
<body>
<?php if($_SESSION['username']): ?>
<p>You are logged in as <?=$_SESSION['username']?></p>
<p><a href="?logout=1">Logout</a></p>
<?php endif; ?>
<form name="login" action="" method="post">
Username: <input type="text" name="username" value="" /><br />
Password: <input type="password" name="password" value="" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
FacebookConnect или OpenID - два отличных варианта.
По сути, ваши пользователи входят в систему на других сайтах, участниками которых они уже являются (Facebook или Google), а затем вы получаете подтверждение с этого сайта, говорящее, что пользователь заслуживает доверия - начните сеанс и они вошли в систему. База данных не требуется (если вы не хотите связать дополнительные данные с их учетной записью).
Сохраните хэши имени пользователя и пароля в массиве в файле php вместо db.
Когда вам нужно аутентифицировать пользователя, вычислите хэши его учетных данных, а затем сравните их с хешами в массиве .
Если вы используете безопасную хеш-функцию (см. хеш-функцию и хеш-алгоритмы в документации PHP), она должна быть довольно безопасной (вы можете подумать об использовании соленого хеша), а также добавить некоторую защиту к самой форме .
Если у вас нет базы данных, где будет храниться ПОСТОЯННАЯ запись данных для входа ваших пользователей? Конечно, пока пользователь находится в системе, минимальная информация о пользователе, необходимая для работы вашего сайта, может храниться в сеансе или cookie. Но что тогда после выхода из системы? Сеанс завершается, файл cookie можно взломать.
Итак, ваш пользователь возвращается на ваш сайт. Он пытается войти в систему. С чем ваш сайт сравнивает данные для входа в систему?
, если вы этого не сделаете. у вас есть база данных, вам придется жестко закодировать данные для входа в свой код или прочитать их из плоского файла на диске.
Вы можете управлять доступом на уровне веб-сервера, используя базовую аутентификацию HTTP и htpasswd . С этим возникает ряд проблем:
Если вы не создаете сайт для внутреннего использования с небольшим количеством пользователей, я бы не стал не очень рекомендую.
Нет причин не использовать базу данных для реализации входа в систему, самое меньшее, что вы можете сделать, - это загрузить и установить SQLite, если ваша хостинговая компания не предоставляет вам достаточно БД.
Я бы использовал настройку из двух файлов, например:
index.php
<?php
session_start();
define('DS', TRUE); // used to protect includes
define('USERNAME', $_SESSION['username']);
define('SELF', $_SERVER['PHP_SELF'] );
if (!USERNAME or isset($_GET['logout']))
include('login.php');
// everything below will show after correct login
?>
login.php
<?php defined('DS') OR die('No direct access allowed.');
$users = array(
"user" => "userpass"
);
if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location: ' . $_SERVER['PHP_SELF']);
}
if(isset($_POST['username'])) {
if($users[$_POST['username']] !== NULL && $users[$_POST['username']] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'];
header('Location: ' . $_SERVER['PHP_SELF']);
}else {
//invalid login
echo "<p>error logging in</p>";
}
}
echo '<form method="post" action="'.SELF.'">
<h2>Login</h2>
<p><label for="username">Username</label> <input type="text" id="username" name="username" value="" /></p>
<p><label for="password">Password</label> <input type="password" id="password" name="password" value="" /></p>
<p><input type="submit" name="submit" value="Login" class="button"/></p>
</form>';
exit;
?>