PHP代码不工作,没有错误

时间:2012-08-20 07:01:42

标签: php

我写的这段代码不是因为一个未知的原因。 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']。当我这样做时,我得到一个空白页。

3 个答案:

答案 0 :(得分:4)

如果您提供的代码是 post.php ,则问题出在此处:

当您按提交按钮时, post.php 仅从表单中收到$_POST['title']$_POST['post']

使$_POST['username']$_POST['password']为空/空。因此,为if语句返回 FALSE ,并生成空白页。

根据您的实施情况,有很多方法可以解决此问题。

  1. 您可以从表单中传递用户名和密码值。如果您愿意,可以使用隐藏的输入类型或文本。

    <input type="hidden" name="username"><input type="hidden" name="password">
    
  2. $_POST['title']内使用$_POST['post']isset()代替$_POST['username']$_POST['password']

  3. 还有更多..

答案 1 :(得分: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']))

或者您可以在会话中保存您的登录信息并使用它们,而无需再次让用户使用他的用户和密码。

答案 2 :(得分:1)

您必须在正文标记后面回复登录表单。

如果没有,您将始终获得一个空白页面,因为您的用户名和密码将始终为空白。