2014-01-05 12 views
5

私はPHPを初めて使い、ログインフォームを開発しました。私が使用したコードを以下で見つけてください。試してみたところ、次のエラーが表示されました:関数の戻り値を使用できません

Fatal error: Can't use function return value in write context in C:\xampp\htdocs\forsiteSystem\login.php on line 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> "); 

?> 

答えて

2

のスクリプトが返すエラーすべきは、それを説明する:

Fatal error: Can't use function return value in write context in C:\xampp\htdocs\forsiteSystem\login.php on line 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_existstrim!emptyの組み合わせを使用すると、より良い動作することを見つけます基本ユーザーが提出したデータ検証。

+1

本当に有益です – VenushkaT

11

$_POST["Submit_button"]代わり$_POST("Submit_button")

+0

真実ですが、解説してください。 :) – kojiro

+2

'$ _POST'はグローバル配列ですが、OPはそれを関数のように呼び出しています。 –

+1

ありがとうございました – VenushkaT

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に関する良いチュートリアルを見つけることをお勧めします。

関連する問題