[英]PHP inside HTML not working
为了避免被误解为“重复问题”,这与这里的问题不同。 由于可以进行PHP配置(phpinfo函数可以正常工作,WordPress开发安装也可以正常工作)。 但是我正在尝试一些小的脚本,这些脚本可能会帮助我生成密码,用于测试目的或只是出于娱乐目的。
这是用于生成密码(HTML与PHP混合)的脚本:
<?php
global $alpha;
global $echo;
$alpha_lower = 'abcdefghijklmnopqrstuvwxyz';
$alpha_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$alpha_nums = '0123456789';
$alpha_spec = '$ß\'"_-*/\\!§()[]{}';
$alpha = "";
$echo = "";
$upper = null;
$lower = null;
$numbers = null;
$special = null;
$pswlen = null;
$pswnum = null;
if(isset($_GET['upper'])) {
$upper = $_GET['upper'];
}
if(isset($_GET['lower'])) {
$lower = $_GET['lower'];
}
if(isset($_GET['numbers'])) {
$numbers = $_GET['numbers'];
}
if(isset($_GET['special'])) {
$special = $_GET['special'];
}
if(isset($_GET['pswlen'])) {
$pswlen = $_GET['pswlen'];
}
if(isset($_GET['psnum'])) {
$pswnum = $_GET['pswnum'];
}
if($lower != null) {
$alpha .= $alpha_lower;
}
if($upper != null) {
$alpha .= $alpha_upper;
}
if($numbers != null) {
$alpha .= $alpha_nums;
}
if($special != null) {
$alpha .= $alpha_spec;
}
function generatePassword($length = 8, $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$ß\'"_-*/\\!§()[]{}') {
$chars = $alphabet;
$count = mb_strlen($chars);
$result = "";
for ($i = 0, $result = ''; $i < $length; $i++) {
$index = rand(0, $count - 1);
$result .= mb_substr($chars, $index, 1);
}
return $result;
}
if($alpha != "") {
if($pswnum != null) {
if($pswlen != null) {
for($i = 0; $i < (int)$pswnum; ++$i) {
$echo .= generatePassword($pswlen, $alpha);
if($i < $pswnum - 1) {
$echo .= "<br />";
}
}
}
}
}
?>
<!DOCTYPE HTML>
<html lang="cs-CZ" type="text/html">
<head>
<meta charset="utf-8" />
<title>Generátor hesel</title>
<style type="text/css">
.passwords {
font-family: Consolas, Courier New, Courier, monospace;
font-size: 12pt;
font-weight: bold;
}
</style>
</head>
<body>
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Heslo má mít tyto znaky:
<label for="lower"><input type="checkbox" name="upper" id="lower" checked /> Malá písmena</label>
<label for="upper"><input type="checkbox" name="lower" id="upper" checked /> Velká písmena</label>
<label for="numbers"><input type="checkbox" name="numbers" id="numbers" checked /> Číslice</label>
<label for="special"><input type="checkbox" name="special" id="special" checked /> Speciální znaky</label><br />
Heslo má být takto dlouhé:
<input type="number" name="pswlen" value="15" /><br />
Hesel má být tolik:
<input type="number" name="pswnum" value="5" /><br />
<input type="submit" value="Vygeneruj!" />
</form>
<p class="passwords"><?php echo $echo; ?></p>
</body>
</html>
问题是, echo
语句不起作用。 什么都不会产生。 该函数是从这里借用的(原始函数与之非常相似,不过只是使用了另一个来源)。 文件以.php
扩展名保存,因此可以正常工作。 但事实并非如此。 我还尝试将重要变量设置为全局变量(可能在错误的位置)。 似乎没有任何作用。 我通过验证程序运行了代码,未报告任何问题,代码看起来很干净。
是什么使脚本不起作用? 它只是唯一一个不起作用的脚本:( Quotes generator可以完美运行,而WordPress就像一个魅力。只是这个小脚本似乎坏了。
您正在检查错误的$ _GET, if(isset($_GET['psnum']))
应该如下:
if(isset($_GET['pswnum'])) {
// ^
$pswnum = $_GET['pswnum'];
}
因此,这种情况:
if($pswnum != null)
永远是错误的,永远也不会进入它的for循环;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.