2014-01-05 16 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

Если вы не понимаете смысл ошибки-и, поверьте мне, большинство сообщений об ошибках являются странными даже опытными программистами - посмотрите на номер строки, на которую ссылаются. И, глядя на строку 3 в login.php, я вижу ошибку; $_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 и сочетание !empty с trim работает лучше базовая пользовательская проверка данных.

+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' not 'POST', чтобы отправить переменные скрипту.Кнопка отправки не возвращает переменную; скорее, используйте другой <input> или добавьте имя в форму <form name="form" action="file.php" method="post"> для извлечения переменной. Таким образом, используя:

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

Кроме того, есть много проблем с использованием $_GET переменных и mysql_connect. Я бы предложил использовать Google, чтобы найти хорошие учебные пособия по PHP mysqli или PDO перед перемещением.

Смежные вопросы