2

私が書いたこのコードは、不明な理由で機能していません。PHPはエラーや警告を報告しません。

<html>
<head>
<title>PHP Blog</title>
</head>
<body>
<?php
require 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database, $db_server)
    or die("Unable to select database: " . mysql_error());
if(isset($_POST['username']) and isset($_POST['password']))
{
    $pass = "test";
    $user = "test";
        if($_POST['username'] == "test" and $_POST['password'] == "test")
        {
            echo <<<_END
<form action="post.php" method="post"><pre>
Title: <input type="text" name="title">
Post:  <textarea rows="5" cols="64" name="post">
</textarea>
       <input type="submit" value="Submit">
</pre></form>
_END;
                if(isset($_POST['title']) and isset($_POST['post']))
                {
                    $title = $_POST['title'];
                    $post = $_POST['post'];
                    $query = "INSERT INTO blog(title,post) VALUES('$title', '$post')";
                    mysql_query($query);
                    echo 'Succesfully posted..';
                    echo '<a href="blog.php">Click here</a>';
                }

        }
        else
        {
            echo "Wrong Password!";
        }
}
?>

$_POST['title']変数を設定$_POST['post']してボタンをクリックするまで、すべてが機能します。そうすると、空白のページが表示されます。

4

3 に答える 3

4

提供したコードがpost.phpの場合、これが問題です。

[送信]ボタンを押すと、post.phpフォームとフォームからのみ受信$_POST['title']$_POST['post']ます。

$_POST['username']$_POST['password']null/emptyを作成します。したがって、ifステートメントに対してFALSEを返し、空白のページを生成します。

実装に応じて、これを修正する方法はたくさんあります。

  1. フォームからユーザー名とパスワードの値を渡すことができます。必要に応じて、非表示の入力タイプまたはテキストを使用できます。

    <input type="hidden" name="username"><input type="hidden" name="password">
    
  2. およびの代わりに$_POST['title']および$_POST['post']内部を使用するisset()$_POST['username']$_POST['password']

などなど..

于 2012-08-20T07:18:13.763 に答える
1

bodyタグの直後にログインフォームをエコーする必要があります。

そうでない場合は、ユーザー名とパスワードが常に空白になるため、常に空白のページが表示されます。

于 2012-08-20T07:24:15.980 に答える
1

フォームは次のようにする必要があるため:

echo <<<_END
    <form action="post.php" method="post"><pre>
    Username: <input type="text" name="username">
    Password: <input type="password" name="password">
    Title: <input type="text" name="title">
    Post:  <textarea rows="5" cols="64" name="post">
    </textarea>
    <input type="submit" value="Submit">
    </pre></form>
_END;

$_POST['username']あなたはあなたを失い、あなた$_POST['password']がのために持っていないのでテストはエコーされませんelse

if(isset($_POST['username']) and isset($_POST['password']))

または、ログイン情報をセッションに保存して、ユーザーにユーザーとパスワードを再度入力させずに使用することもできます。

于 2012-08-20T07:05:49.207 に答える