-1

Android アプリを使用して PHP スクリプトにデータを送信しています。以下はPHPスクリプトです。

テレジョーク.php:

<?php
  include 'JokeValidation.php';
  include 'DBConnect.php';

  $username = $_POST['username'];
  $joke = $_POST['joke'];
  $dbname = 'Telejoke';
  mysql_select_db($dbname);

  if (validate()){
    $query = "INSERT INTO jokes (username, joke) VALUES ('$username','$joke')";
    mysql_query($query) or die('Error, insert query failed');
  }
  mysql_close($conn);
?>

ジョーク検証.php:

<?php
  include 'DBConnect.php';
  $dbname = 'telejoke';
  mysql_select_db($dbname);
  function validate(){
    if ($joke == null) return false;
    else if($username == null) return false;
   return true;
  }
?>

何らかの理由で、PHP スクリプトは、取り出したときにデータをデータベースに入れif ($joke == null) return false;ますelse if($username == null) return false;。しかし、これらのステートメントを PHP コードに入れると、validate が false を返すようです。$username と $joke は、これらのステートメントを取り出したときにデータベースに送られるため、null にすることはできません!

助けていただければ幸いです。ありがとう。

4

3 に答える 3

4

検証関数は、$joke および $username オブジェクトにアクセスできる必要があります。

function validate($joke, $validate) {
    if ($joke == null)
        return false;
    else if ($username == null)
        return false;
    return true;
}

これらの変数には、validate メソッド内で以下を使用してアクセスすることもできます。

global $joke, $username

ただし、コード内の別の場所で宣言および設定されている変数に依存するよりも、検証対象を宣言する方が適切です。global を使用すると、他の理由でサイレントに失敗する場合があります。

于 2012-04-10T01:35:47.837 に答える
2

変数には関数スコープがあります。変数$joke$usernameは、宣言も関数への渡しもしていないため、関数内には存在しません。関数パラメーターを使用します。

function validate($joke, $username) {
   ...
}

if (validate($joke, $username)) {
   ...
}
于 2012-04-10T01:35:28.707 に答える
1

function validate($joke,$username)

postvarsまた、それらをデータベースに挿入する前にフィルタリングしてください。

于 2012-04-10T01:36:08.160 に答える