这个功能好吗?

时间:2011-08-18 18:11:55

标签: php function

我的所有网站功能都类似于我将在下面粘贴的功能。 我本来想问, 有这个功能任何可能的错误?这个功能会让服务器加载吗?你能为我的网站提出更好的建议吗?我的网页上有很多网页浏览量,所以我需要在不加载服务器的情况下获取数据。

代码(用于获取单个帖子。)

function single($id = '') {
    $id = mysql_real_escape_string ($id);
    $sql = 'SELECT id,post_title,post_date,post_content FROM wp_posts WHERE id='.$_GET['id'].'  LIMIT 1';
    $res = mysql_query($sql) or die (mysql_error());    

if (mysql_num_rows($res) !=0):
    while ($row = mysql_fetch_assoc($res)) {

    //this filter the content from the database
    $mycontent = $row['post_content'];
    $mycontent = strip_tags($mycontent);
    $mycontent = preg_replace("/\[caption.*\[\/caption\]/", '', $mycontent); 
    $mycontent = htmlentities($mycontent);

    //this make possible  to show special characters on title
    $title = $row['post_title'];
    $title = htmlentities($title);

    //date format
        $old_date = $row['post_date'];            
    $old_date_timestamp = strtotime($old_date);
    $new_date = date('d.m.Y   H:i', $old_date_timestamp); 

    //get first post image
    $first_img = '';
    ob_start();
    ob_end_clean();
    $my1content = $row['post_content'];
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $my1content, $matches); 
    $first_img = $matches [1] [0];
    if(empty($first_img)){ //Defines a default image
    $first_img = "/img/default.png";
    }

    echo '
        <div class="single-header">
        <div class="single-title">'.$title.'</div>  
        <div class="single-tr"> '.$new_date.'</div> 
        </div><!-- single header -->
        <div class="single-print"></div><!-- print -->
        <div class="single-content">
        <div class="single-img">
        <img src="timthumb.php?src='.$first_img.'&amp;h=223&amp;w=395&amp;zc=1" alt="" />
        </div>
        <div class="single-text">'.$mycontent.' </div>
        </div> <!-- content -->
    '; //echo
}
    else:
        echo 'Dont exist';
    endif;
} // end

这对我来说非常重要,请检查一下,任何形式的帮助都会很棒

非常感谢你阅读这篇帖子。

1 个答案:

答案 0 :(得分:0)

  1. 安全性:你是mysql-real-escape-$id来自函数调用,但是$_GET['id']包含在查询中......
  2. ob_start();ob_end_clean();之间没有任何内容,因此无用
  3. 为了便于阅读,我会做一些小改动:
  4. // e.g. instead
    $title = $row['post_title'];
    $title = htmlentities($title);
    // do
    $title = htmlentities($row['post_title']);
    

    编辑:

    由于这似乎是Wordpress的一个功能,您可以使用wpdb-class而不是直接使用mysql函数。