【问题标题】:Can't use function return value不能使用函数返回值
【发布时间】:2014-01-22 16:47:39
【问题描述】:

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

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

请帮我解决问题。

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> ");

?>

【问题讨论】:

    标签: php mysql function login runtime-error


    【解决方案1】:

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

    【讨论】:

    • 没错,但请详细说明。 :)
    • $_POST 是一个全局数组,但是 OP 把它当作函数来调用。
    【解决方案2】:

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

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

    如果您不理解错误的含义(相信我,即使对于经验丰富的程序员来说,大多数错误消息都是奇怪的),请查看引用的行号。查看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 的组合更适合基本的用户提交数据验证。

    【讨论】:

      【解决方案3】:

      首先清理一些代码可能会有所帮助。 PHP 在if() else 语法中不需要大括号;但是,这是一个很好的起点。我建议深入了解 PHP here 的基本语法。并不是说那里的东西行不通。

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

      您遇到的主要问题是 PHP 中数组的正确语法。因此,这将解决您的致命错误。

      //old
      $_POST("Submit_button")
      
      //new
      $_POST['foo']
      

      这修复了您的第一个致命错误;相反,不会让你走得更远。由于您的表单使用 'GET' 而不是 'POST' 将变量发送到脚本。提交按钮不返回变量;相反,使用另一个&lt;input&gt; 或在&lt;form name="form" action="file.php" method="post"&gt; 表单中添加名称以检索变量。因此使用:

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

      此外,使用$_GET 变量和mysql_connect 有很多问题。我建议在继续之前使用 Google 找到一些关于 PHP mysqliPDO 的好教程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-08
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 2014-09-08
        • 2015-04-12
        • 1970-01-01
        相关资源
        最近更新 更多