我试图根据使用的 Windows 登录名为用户提供一个页面。关键绝对不是安全性,而是人们希望它舒适,所以他们打开浏览器并查看他们想要看到的内容。我想到了 $_server['remote_user'] 但这是空的。我用谷歌搜索了很多,只发现似乎需要身份验证或会话的东西,两者都需要很多小时的工作;)
我正在使用 WAMP,不想在系统上更具体,因为我希望它明天也能运行,而且我更喜欢肮脏的解决方案。感谢您的评论。
bj
感谢您的评论,我至少为这个特殊目的找到了一个可行的解决方案:
第一个文件使用 WScript.Network 读取 windows 用户名并发送一个包含用户名的表单。第二个将其写入会话变量。黑暗和肮脏但易于维护和处理......
文件 1,session02.php:
<?php
session_start();
?>
<form id="form_user_name" name="form_new_record" action="session03.php" method="post" accept-charset="ISO-8859-1">
<input name="user_name" type="text" >
<input type="submit" value="Submit">
</form>
<script type=text/javascript>
var wscript_network=new ActiveXObject("WScript.Network");
var user_name=wscript_network.UserName;
form_user_name.user_name.value=user_name;
form_user_name.submit();
</script>
文件 2,session03.php:
<?php
session_start();
$current_windows_user=$_POST['user_name'];
$_SESSION['current_windows_user'] = $current_windows_user;
echo "---".$_SESSION['current_windows_user']
?>
稍后 $_SESSION['current_windows_user'] 或 $current_windows_user 可用
谢谢大家!
您的问题有点不清楚,如果您要求使用 PHP 从 Windows PC 检查用户登录,这是无法完成的。
但是,如果您想使用简单的(安全性较低的)HTML 表单以及 PHP 和 MySQL(都包含在 *AMP 中),我建议您执行以下操作:
在您的 index.html 页面上:
<form method="POST" action="validatelogin.php">
<input type="text" name="username" placeholder="Enter username" />
<input type="submit" value="Submit" />
</form>
在您的 validatelogin.php 页面上
session_start();
$dsn = "mysql:host=localhost;dbname=example;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','password', $opt);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$username = $_POST['username'];
$stmt->execute(array(
':username'=>$username,
));
$exist = $stmt->fetch();
if (!empty($exist)) {
$_SESSION['id'] = $exist["id"];
}
最后一步是最关键的:
此设置假设您有一个名为 example 的数据库,使用 username:root password:password 的登录凭据。此示例还假设您在该数据库中创建了一个名为 users 的表。
该表将具有以下设置:
2 行
第一行名称:id
第一行类型:int
第一行 A_I:选中
第二行名称:用户名
第二行类型:文本
从这里您可以将您希望人们使用的用户名插入到数据库中,我希望这会有所帮助。