0

我一直想使用实际机器的用户名和密码来验证网站凭据。我已经研究了其他一些解决方案,但我认为这种方法会给我带来最少的问题,因为它已经是我知道可以工作的 shell 函数,只需要很少的设置,而且看起来很容易管理。

注意,这是我第一次发帖(大声笑 PHP 笑话),所以我的格式可能不是那么漂亮。

这是简短的示例脚本。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

$user="username";
$password="password";

$tunnels=array(
    0 => array('pipe','r'), // Process std input
    1 => array('pipe','w'), // Process std output
    2 => array('pipe','w') // Process std error
    );

$io=array();             
$resource=proc_open("login",$tunnels,$io);

if(!is_resource($resource)) {                       
    // Throw exception or something...
    echo "uuh oh";
}
fwrite($io[0],"$user");
fwrite($io[0],"$password");
//fwrite($io[0],"whoami\n");
fflush($io[0]);
fclose($io[0]);

while(!feof($io[1]))
{
 echo fgets($io[1]);
}

fclose($io[1]);
fclose($io[2]);

// Close process resource
$result=proc_close($resource);
echo $result;

if($result != 0) {          
    // There where errors.
}         
    ?>

当我运行它时,输出如下

login: 0

我试着改变

fwrite($io[0],"$user");
fwrite($io[0],"$password");

fwrite($io[0],"$user\n");
fwrite($io[0],"$password\n");

但现在它说

login: Login incorrect login: Login incorrect login: 0

此外,这是在 OSX 服务器上运行并使用 PHP 5.4.17 版!如果它适用于另一个操作系统,我不知道。

4

0 回答 0