сценарий: в доме веб-сервер работает apache2, вот виртуальные хосты:Войти сценарий - метод обзора
< domain.com - для общественности, WordPress сайт
< employee.domain.com - для сотрудников только, необходимо войти в аккаунт, без WordPress сайта
посещения сотрудника employee.domain.com/page1.php
//page1.php
session_start();
if (isset($_SESSION['username']))
{ <page displayed here> }
else
{
$_SESSION['redir_after_auth'] = $_SERVER['PHP_SELF'];
header('Location: http://domain.com/login?sid='.session_id());
}
в домене domain.com/login, все переменные $ _SESSION восстанавливаются, а затем auth. продолжается. В случае успеха сотрудник перенаправляется обратно туда, где они пытались посетить, employee.domain.com/page1.php. Теперь, поскольку $ _SESSION ['username'] установлен, будет загружаться page1.php.
//domain.com/login
<?php
//check for session_id (sid) and attempt to restore $_SESSION variables that were set at employees.domain.com
if (isset($_GET['sid']) && trim($_GET['sid']) != '') {
session_id($_GET['sid']);
}
session_start();
date_default_timezone_set('America/city');
$date = date('l jS F Y h:i A T');
$hostname = 'localhost';
$dbname = 'employees'; //no, these are not the real values
$username = 'sql_username'; //no, these are not the real values
$password = 'password'; //no, these are not the real values
mysql_connect($hostname, $username, $password) or DIE('Connection to host is failed, perhaps the service is down!');
mysql_select_db($dbname) or DIE('Database name is not available!');
if(isset($_POST['username'])){
if(isset($_POST['password'])){
$login = mysql_query("SELECT * FROM users WHERE (username = '" . mysql_real_escape_string($_POST['username']) . "') and (password = '" . mysql_real_escape_string(md5($_POST['password'])) . "')");
$num_results = mysql_num_rows($login);
if ($num_results == 1){
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
while ($row = mysql_fetch_assoc($login)){
$_SESSION['priv'] = $row['priv'];
$_SESSION['email'] = $row['email'];
}
$tbl_name2="access_log";
$user = $_POST['username'];
//lets record logins in mysql for later review
$addrecord = mysql_query("INSERT INTO $tbl_name2 (id, username, date) VALUES ('','$user','$date')");
if(isset($_SESSION['redir_after_auth'])){
header('Location: http://employees.domain.com' . $_SESSION['redir_after_auth']);
die();
}
else {
header('Location: http://employees.domain.com?sid=' . session_id());
unset($_SESSION['$num_results']);
die();
}
}
else {
?>
<table align="center">
<tr><td align="center">
<p style="color:#F00">
<?php echo 'Incorrect Username or Password'; ?>
</p>
</td></tr>
</table>
<?php
}
}
}
?>
//this is actually a shortcode in wordpress, hence the html login form here
<div>
<form action="" method="POST">
<table align="center">
<tr><td align="left">Username: </td><td align="left"><input type="text" name="username"></td></tr>
<tr><td align="left">Password: </td><td align="left"><input type="password" name="password"></td></tr>
<tr><td align="left"><input type="submit" value="Login"></td></tr>
</table>
</form>
</div>
Существует не чувствительно к регистру информации о employees.domain.com, просто календарь компании, формы, ЭСТ ... но, как надежен этот метод? Он открыт для www, поэтому я немного нервничаю.
мысли, предложения?
спасибо!
редактировать:
забыл добавить, пароли, зашифрованные MD5 в MySQL
Если вы пришлете мне в ПМ с именем пользователя/паролем, я попробую его с www и скажу вам, если он достаточно безопасен: p – tryme
Может быть лучше на [CodeReview.SE] (http://codereview.stackexchange.com/) ... – Gumbo