【发布时间】:2014-09-12 18:52:19
【问题描述】:
我是 php 编程新手。我需要创建一个网页,该网页从用户那里获取用户名和密码,并在验证后可以访问特定的文本文件。我已经在文档页面上看到了基本内容,运行后对我来说效果很好(但是我需要定义用户名和密码):
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>
我的问题是,我需要一个 bash/shell 脚本,它将用户名和密码信息发送到此页面,然后它可以下载 texfile。该文本文件位于 htdocs 目录中,名为“welcome.txt”。用于下载文件的 bash 脚本命令可以是这样的:
#!/bin/bash
clear
wget --user=admin --password=admin http://behzadgarekani.net16.net/connect.php -O -q my-old-bookmarks.txt
或
使用curl
如果您能帮助我,我将不胜感激。没有力量我必须这样做。如果您有任何其他建议分享此文本文件,我们将不胜感激。
编辑:
<?php
destroy_foo();
function destroy_foo()
{
unset($GLOBALS[_SERVER]);
if (isset($_SERVER['PHP_AUTH_USER'])) {
unset($_SERVER['PHP_AUTH_USER']);
}
if (isset($_SERVER['PHP_AUTH_PW'])) {
unset($_SERVER['PHP_AUTH_PW']);
}
}
//unset ($_SERVER['PHP_AUTH_USER'] );
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
//header('Location: welcome.txt');
$file = 'welcome.txt';
if($_SERVER['PHP_AUTH_PW'] == "admin" && $_SERVER['PHP_AUTH_USER'] =="admin"){
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
destroy_foo();
exit;
}
}
}
?>
【问题讨论】:
-
你有没有看到用户名和密码php.net/manual/en/features.http-auth.php的例子
-
@zod 是的。我的问题是文本文件。如果用户名和密码正确,如何将其重定向到文本文件?
标签: php bash file shell authentication