繁体   English   中英

HTML内的PHP无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM