PHP won't process form


PHP won't process form

我已经有了这个HTML表单:

<form action="../functions/createproject.php" method="post">
Name: <input type="text" name="name"><br>
Description: <input type="text" name="description"><br>
<input type="submit">
</form>
下面的PHP代码(createproject.php):
<?php
$projectname = $_POST["name"];
$projectdescription = $_POST["description"];
function createproject() {
    if (!file_exists("../projects/$projectname")) {
        mkdir("../projects/$projectname", 0777, true);
    }
    $fp = fopen($_SERVER['DOCUMENT_ROOT'] . "../projects/$projectname/info.txt","wb");
    fwrite($fp,$content);
    fclose($fp);
}
createproject();
?>

但是我得到以下错误:

Notice: Undefined variable: projectname in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 5 Notice: Undefined variable: projectname in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 8 Warning: fopen(/home/wdele/domains/hypah.org/public_html../projects//info.txt): failed to open stream: No such file or directory in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 8 Notice: Undefined variable: content in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 9 Warning: fwrite() expects parameter 1 to be resource, boolean given in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 9 Warning: fclose() expects parameter 1 to be resource, boolean given in /home/wdele/domains/hypah.org/public_html/functions/createproject.php on line 10

我想不出任何不工作的理由。

任何想法?谢谢。

在全局作用域中定义$projectname,但在函数作用域中使用它。有两种方法可以处理这个问题:

使用global使全局变量在函数中可用:

function createproject() {
    global $projectname;
    ...

或者将函数改为以$projectname为参数:

function createproject($projectname) {
    ...

则用createproject($projectname)调用。

后者是通常的做法。全局变量的使用通常是不受欢迎的,因为它使代码更难理解,并且缺乏模块化。

不能在函数外部调用已定义的变量。使用global关键字。像这样:

function createproject() {
    global $projectname;
    if (!file_exists("../projects/$projectname")) {
        mkdir("../projects/$projectname", 0777, true);
    }
    $fp = fopen($_SERVER['DOCUMENT_ROOT'] . "../projects/$projectname/info.txt","wb");
    fwrite($fp,$content);
    fclose($fp);
}