不能使用函数返回值

时间:2014-01-05 05:14:41

标签: php mysql function login runtime-error

我是PHP的新手并开发了一个登录表单。请在下面找到我使用的代码。当我尝试它时给了我以下错误:

  

致命错误:无法在写入上下文中使用函数返回值   第3行的C:\ xampp \ htdocs \ forsiteSystem \ login.php

请帮我解决问题。

thems/login.html的源代码:

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form action=".\login.php" method="get">
        Name: <input type="text" name="name"><br>
        E-mail: <input type="text" name="email"><br>
                <input type="submit"  id="Submit_button">
        </form>
    </body>
</html>

index.php的源代码:

<?php
        // venushka thisara dharmasiri

        require 'config.php';
        require 'thems\login.html';

 ?>

login.php的源代码:

<?php

  if(isset($_POST("Submit_button"))==true)  
      print("Submit button pressed");
  else
      print("submit button sorry");

?>

config.php的源代码:

<?php

$dbUser="root";
$dbPassword="";
$dbName="forsitelogin";
$dbHost="localHost";

$dbConnection= mysql_connect($dbHost, $dbUser, $dbPassword);

if($dbConnection)
{
    mysql_select_db($dbName);
    //print("Sucessfully connected to database");
}
else
    die("<strong>Cound not connect to database </strong> ");

?>

3 个答案:

答案 0 :(得分:11)

应该是$_POST["Submit_button"]而不是$_POST("Submit_button")

答案 1 :(得分:2)

脚本返回的错误解释了它:

  

致命错误:无法在写入上下文中使用函数返回值   第3行的C:\ xampp \ htdocs \ forsiteSystem \ login.php

如果您不理解错误的含义 - 并且相信我,即使对于有经验的程序员来说,大多数错误消息都是奇怪的 - 查看引用的行号。在login.php中查看第3行显示错误; $_POST("Submit_button")无效:

if(isset($_POST("Submit_button"))==true)  
    print("Submit button pressed");
else
    print("submit button sorry");

应为$_POST["Submit_button"]

if(isset($_POST["Submit_button"])==true)  
    print("Submit button pressed");
else
    print("submit button sorry");

但进一步观察,为什么会有==true?它可以是这样的:

if(isset($_POST["Submit_button"]))  
    print("Submit button pressed");
else
    print("submit button sorry");

但我建议更好地检查一下这个值:

if(array_key_exists("Submit_button", $_POST) && !empty(trim($_POST["Submit_button"])))  
    print("Submit button pressed");
else
    print("submit button sorry");

我发现使用array_key_exists以及!emptytrim的组合更适合基本用户提交的数据验证。

答案 2 :(得分:1)

首先清理一些代码可能有所帮助。 PHP不需要if() else语法中的大括号;然而,一个很好的起点。我建议深入研究PHP here的基本语法。那不是什么都行不通。

if(condition){
//do something
} else {
//do something else
}

您遇到的主要问题是PHP中数组的正确语法。这样就可以解决你的致命错误。

//old
$_POST("Submit_button")

//new
$_POST['foo']

这解决了你的第一个致命错误;相反,不会让你更进一步。由于您的表单使用“ GET ”而非“ POST ”将变量发送到脚本。提交按钮不返回变量;相反,使用另一个<input>或向表单<form name="form" action="file.php" method="post">添加名称以检索变量。因此使用:

if(isset($_POST['form'])){
  echo $_POST['name'];
} 

此外,使用$_GET变量和mysql_connect存在许多问题。在继续之前,我建议使用Google在PHP mysqli PDO 上找到一些好的教程。