Ber*_*ard 5 php global-variables unset
我了解 php 和 Web 编程的基础知识。这是我的 php 代码。我见过几个类似的问题。他们使用 unset 函数取消设置全局变量。我希望每次用户打开网址时,都会出现用户名和密码提示,输入用户名密码后,如果正确,则下载文件并删除用户名和密码,如果错误,则删除用户名和密码,并再次提示输入用户名密码。
<?php
function destroy_foo()
{
if (isset($_SERVER['PHP_AUTH_USER'])) {
unset($_SERVER['PHP_AUTH_USER']);
}
if (isset($_SERVER['PHP_AUTH_PW'])) {
unset($_SERVER['PHP_AUTH_PW']);
}
}
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>";
$file = 'welcome.txt';
if($_SERVER['PHP_AUTH_PW'] == "admin" && $_SERVER['PHP_AUTH_USER'] =="admin"){
destroy_foo();
if (file_exists($file)) {
//Do some task
destroy_foo();
exit;
}
}
else
{
//Do some task
destroy_foo();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
目前,由于某种原因,用户名和密码保留在全局变量中。如果您能提供建议或提示,我将不胜感激。
编辑
这也不起作用:
function destroy_foo()
{
if (isset($_SERVER['PHP_AUTH_USER'])) {
unset($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_USER'] = null;
}
if (isset($_SERVER['PHP_AUTH_PW'])) {
unset($_SERVER['PHP_AUTH_PW']);
$_SERVER['PHP_AUTH_PW'] = null;
}
}
Run Code Online (Sandbox Code Playgroud)
文件链接: http: //behzadgarekani.net16.net/
我认为你用 unset() 函数做得很好,但我看到了一些无序的代码。我认为通过这种方式你可以做你想做的事:
function destroy_foo() {
if(isset($_SERVER['PHP_AUTH_USER']))
unset($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW']))
unset($_SERVER['PHP_AUTH_PW']);
}
if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER']=='admin' && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW']=='admin') {
//download the file
destroy_foo();
} else {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25522 次 |
| 最近记录: |