首页 > 新人请教PHP大神纠正代码错误,一个简单的BLOG代码。

新人请教PHP大神纠正代码错误,一个简单的BLOG代码。

本人刚接触PHP,现在从陈浩编著的《零基础学PHP》里学习做一个简单的博客,将代码敲好后发现执行出现错误,当我输入标题和内容提交后,点击查看日志页面显示“请求参数错误”,但我不知道哪里有问题。还有对于下面的代码有些不理解的地方请一并解答:

  1. 请问add.php5中的$ok有什么作用?它出现的那几行代码不是很理解。

  2. if(mkdir($folder))和If(strlen($result)>0)里面的代码为什么是用双斜杠?貌似不是用来注释啊。

  3. a href="post.php5?entry='.$entry.'"这行代码不理解为什么$entry前后都有句点,希望能给我解释这行的意思。

相关的代码已附上,希望懂的朋友帮助下我这名菜鸟,不胜感激。

add.php5

<?php
$ok = true;

if(isset($_POST['title']) && isset($_POST['content'])){
    $ok = true;

    $title = trim($_POST['title']);
    $content = trim($_POST['content']);
    $date = time();
    $blog_str = $title.'|'.$date.'|'.$content;

    $ym = date('Ym',time());
    $d = date('d',time());
    $time = date('His',time());

    $folder = 'contents/'.$ym;
    $file = $d.'-'.$time.'.txt';
    $file_name = $folder.'/'.$file;
    $entry = $ym.'-'.$d.'-'.$time;

    if(file_exists($folder)==false){
        if(!mkdir($folder)){
            //$ok = false;
            //$smg = '<p id="err">创建目录异常,添加日志失败</p>';
        }
    }

    $fp = @fopen($file_name,'w');
    if($fp){
        flock($fp, LOCK_EX);
        $result = fwrite($fp,$blog_str);
        $lock = flock($fp, LOCK_UN);
        fclose($fp);
    }
    if(strlen($result)>0){
        //$ok = false;
        $msg = '日志添加成功,<a href="post.php5?entry='.$entry.'">查看该日志文章</a>';
        echo $msg;
    }
}
?>


<!DOCTYPE html>
<html>
    <head>
        <title>基于文本的简易BLOG</title>
        <link rel="stylesheet" type="text/css" href="style.css"/>
    </head>

    <body>
    <div id="container">
        <div id="header">
            <h1>我的BLOG</h1>
        </div>
        <div id="title">
            -----I have dream...
        </div>

        <div id="left">
            <div id="blog_entry">
                <div id="blog_title">添加一篇新日志</div>

                <div id="blog_body">
                    <div id="blog_date"></div>
                    <table border="0">
                        <form method="POST" action="add.php5">
                            <tr><td>日志标题:</td></tr>
                            <tr><td><input type="text" name="title" size="50"/> </td></tr>
                            <tr><td>日志内容:</td></tr>
                            <tr><td><textarea name="content" cols="49" rows="10"></textarea> </td></tr>
                            <tr><td><input type="submit" value="提交"/> </td></tr>
                        </form>
                    </table>
                </div>
            </div>
        </div>

        <div id="right">
            <div id="sidebar">
                <div id="menu_title">关于我</div>
                <div id="menu_body">我是个PHP爱好者</div>
            </div>
        </div>

        <div id="footer">
            CopyRight 2011
        </div>
    </div>
    </body>
</html>

style.css

body{
    font-size:12px;
    background-color:#c6c68c;
    padding:0;
    font-family:Helvetica,sans-serif;
}

#container{
    margin-left:auto;
    margin-right:auto;
    margin-top:2px;
    margin-bottom:0;
    padding:0;
    width:760px;
    background-color:#f6f6f6;
    border:1px solid #000;
}

#header{
    margin-left:auto;
    margin-right:auto;
    padding:8px;
    height:80px;
    background-color:#E8F3FD;
    border-bottom:1px solid #000;
    font-size:16px;
    font-weight:bold;
}

#title{
    margin-left:auto;
    margin-right:auto;
    padding:8px;
    height:10px;
    background-color:#E8F3FD;
    border-bottom:1px solid #000;
    font-style:italic;
}

#left{
    float:left;
    margin:6px 0 4px 2px;
    padding:5px;
    width:530px;
}

#right{
    float:right;
    margin:6px 0 4px 2px;
    padding:5px;
    width:200px;
}

#blog_entry{
    margin-left:auto;
    margin-right:auto;
    margin-top:4px;
    margin-bottom:10px;
    border:1px solid #000;
    background-color:#fff;
}

#blog_title{
    border-bottom:1px solid #000;
    background-color:#e8ecdb;
    margin:0px;
    padding:4px;
    font-weight:bold;
    font-size:13px;
}

#blog_body{
    margin-left:auto;
    margin-right:auto;
    padding:0 0 8px 0;
    font-size:10px;
}

#blog_date{
    margin-left:auto;
    margin-right:auto;
    padding:0 0 8px 0;
    font-size:10px;
}

#sidebar{
    margin-left:auto;
    margin-right:auto;
    border:1px solid #000;
    width:180px;
    background-color:#fff;
}

#menu_title{
    border-bottom:1px solid #000;
    background-color:#e8ecdb;
    margin:0px;
    padding:4px;
    height:10px;
    font-weight:bold;
}

#menu_body{
    margin-left:auto;
    margin-right:auto;
    margin-top:4px;
    padding:6px;
}

#footer{
    clear:both;
    text-align:center;
    margin-left:auto;
    margin-right:auto;
    padding:8px;
    height:10px;
    background-color:#e8f3fd;
    border-top:1px solid #000;
}

#err{
    color:red;
}

post.php5

<?php
if(!isset($GET['entry'])){
    echo '请求参数错误';
    exit;
}

$path = substr($_GET['entry'],0,6);
$entry = substr($_GET['entry'],7,9);

$file_name = 'contents/'.$path.'/'.$entry.'.txt';

if(file_exists($file_name)){
    $fp = @fopen($file_name,'r');
    if($fp){
        flock($fp,LOCK_SH);
        $result = fread($fp,1024);
    }
    flock($fp,LOCK_UN);
    fclose($fp);
}
$content_array = explode('|',$result);

echo '<h1>我的BLOG</h1>';
echo '<b>日志标题:</b>'.$content_array[0];
echo '<br><b>发布时间:</b>'.date('Y-m-d H:i:s',$content_array[1]);
echo "<hr>";
echo $content_array[2];
?>


楼主是个妹子


请问你看的什么书? 能将你书上的代码拍个照发上来吗?

顺便回答一下你的问题:

  1. 那个 $ok 变量目前看起来没有用, 将来的作用可能是用来记录在代码执行的过程中是否有出错将其赋值为 false, 然后根据根据它的值 来显示 添加成功或者添加失败.

  2. 那个加了 // 的就是注释,即那行代码是不会被执行的.

  3. PHP里的 . 是用来连接字符串的, 在你的代码里是用来拼HTML代码的.
    用法举例:

<?php
$a = '123';
$b = '456';
$c = $a . $b;
echo $c;//输出 123456

$d = '[' . $c . ']';
echo $d;//输出 [123456]

至于你最开始说的那个出错,我想原因可能是你打代码的时候不认真,少打了一个 _ 下划线.
见下图:


仔细对比一下你输入的代码和你书上的代码.

【热门文章】
【热门文章】