36 1234
发新话题
打印

areone的php学习专用帖,高手拍砖

本主题由 .abu. 于 2008-9-3 12:53 置顶

areone的php学习专用帖,高手拍砖

作为一名文字工作者,areone开始出于兴趣写写小程序玩了。

初学,一起学的朋友也可以进来讨论,高手不要笑话,多多指点。文章内容转帖和原创的都有,学东西模仿着慢慢来嘛。呵呵。

hello world 我就跳过了,老早以前就学过,先搞点留言板代码来玩玩。

大致先写留言板的一些数据库操作

增,

删,

改,

然后再研究一下分页类,

然后就是登陆验证 cookie 和session 会员注册,

会员权限控制,例如,只对自己的留言有增删改权限,

然后研究一下正则表达式,

文件上传,

数据库操作类的使用

再研究一下smarty, smarty初始化,制作模板,

再深入一点就写一些代码封装,

缓存

生成静态页html

如果能坚持的话,再尝试一下mvc模式。

先结帖,以后再加了。

TOP

支持
年轻是一种罪过。他们说我们不成熟。
成熟是一个很痛的词,它不一定会得到,却一定会失去。
恋爱的时候我们都不懂爱情,懂得爱情后却失去了可以相爱的时光。

TOP

作为一名曾经的文字工作者,我也支持你
你看不见我看不见我看不见我

TOP

我也支持了

TOP

感谢兄弟们支持我。

好了,开始了。呵呵。

先规划一下简单的表结构
id  流水号id,自动生成
username 用户名
content 留言内容
insert_time  插入时间

建表语句:
CREATE TABLE `gb_content` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 16 ) NOT NULL ,
`content` VARCHAR( 255 ) NOT NULL ,
`insert_time` DATETIME NOT NULL
)

个人习惯用phpmyadmin来操作mysql数据库,很简单方便。
使用phpMyAdmin创建数据库guestbook后执行以上语句建表gb_content

然后来写一个公共文件,数据库连接文件 common.php
复制内容到剪贴板
代码:
<?php   
// 连接数据库服务器     
$link = mysql_connect('localhost', 'root', 'password')   
        or die('数据库连接错误: ' . mysql_error());     
// 选择数据库     
mysql_select_db('guestbook');   
?>  

TOP

加好,然后开始来做操作

添加留言。

流程操作大概是这样的:

先加载公共文件,建立数据库连接,判断是否是添加的操作,如果没有的话,显示表单,如果有的话,就做一些微处理操作后,加入数据库。

主要的微处理有:

清除表单内容的空格
过滤转换输入
判断表单是否全部填写
判断表单是否超出长度

然后就获取表单文件,插入数据库。
复制内容到剪贴板
代码:

<?php   
require('common.php');   
if ($_GET['action']=='save') {   
    // 清除空格   
    $_POST['username'] = trim($_POST['username']);   
    $_POST['content'] = trim($_POST['content']);   
    if (!get_magic_quotes_gpc()) {// 如果魔术引号关闭使用addslashes转换   
        $_POST['username'] = addslashes($_POST['username']);   
        $_POST['content'] = addslashes($_POST['content']);   
    }   
    // 判断表单是否全部填写   
    if (!$_POST['username'] || !$_POST['content']) {   
        echo '请输入用户名和内容!';   
        exit;   
    }   
    // 判断用户名是否超出长度   
    if (strlen($_POST['username'])>16) {   
        echo '用户名超出长度!';   
        exit;   
    }   
    // 判断内容是否超出长度   
    if (strlen($_POST['content'])>255) {   
        echo '内容超出长度!';   
        exit;   
    }   
      
    // insert SQL语句   
    $sql = "insert into gb_content (username,content,insert_time)   
            values ('".$_POST['username']."','".$_POST['content']."','".date('Y-m-d H:i:s')."')";   
    mysql_query($sql,$link);// 执行SQL查询   
    echo '添加成功! <a href="index.php">查看留言</a>';   
    exit;   
}   
?>   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
<title>提交留言</title>   
<link rel="stylesheet" type="text/css" href="style.css" media="all" />   
</head>   
  
<body>   
<table width="500" border="0" cellspacing="0" cellpadding="0" class="tb">   
  <tr>   
    <td class="bg"><b>[提交留言]</b></td>   
  </tr>   
  <tr>   
    <td><form id="form1" name="form1" method="post"  action="add.php?action=save">   
        <table width="500" border="0" cellspacing="0" cellpadding="0">   
          <tr>   
            <td width="12%">用户名:</td>   
            <td width="88%"><input type="text" name="username" /></td>   
          </tr>   
          <tr>   
            <td width="12%">内容:</td>   
            <td width="88%"><textarea name="content" cols="40" rows="6"></textarea>   
            </td>   
          <tr>   
            <td width="12%"></td>   
            <td width="88%"><input type="submit" name="submit" value="提 交"  /></td>   
          </tr>   
        </table>   
      </form></td>   
  </tr>   
</table>   
</body>   
</html>  


TOP

支持
很不错,接着来~

TOP

最近有点小忙,继续,呵呵。

下面是留言本列表页面
复制内容到剪贴板
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
<title>所有留言</title>   
<link rel="stylesheet" type="text/css" href="style.css" media="all" />   
</head>   
  
<body>   
<a href="add.php">发表留言</a>   
<?php   
require('common.php');   
$result = mysql_query("SELECT * FROM gb_content order by id desc");//查询数据   
  
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {// 取一条数据   
?>   
<table width="700" border="0" cellspacing="0" cellpadding="0" class="tb">   
  <tr>   
    <td class="bg"><b>[<?php echo htmlentities($row['username']) ?>]</b> 发表于:<?php echo htmlentities($row['insert_time']) ?></td>   
  </tr>   
  <tr>   
    <td><?php echo htmlentities($row['content']) ?></td>   
  </tr>   
  <tr>   
    <td align="right"><a href="edit.php?id=<?php echo $row['id'] ?>">修改</a> <a href="delete.php?id=<?php echo $row['id'] ?>">删除</a></td>   
  </tr>   
</table>   
<?php   
}   
  
mysql_free_result($result);   
  
?>   
</body>   
</html>  

TOP

留言本代码 - 删除留言
复制内容到剪贴板
代码:

<?php   
require('common.php');   
mysql_query('delete from gb_content where id='.intval($_GET['id']));//删除语句   
echo '已删除!<a href="index.php">查看留言</a>';   
?>  

TOP

留言本,修改页面

修改页面由添加页面改造

表单增加隐藏域:<input type="hidden" name="id" value="<?php echo $row['id'] ?>" />
记录对应留言ID

insert修改为update:
$sql = "update gb_content set
username='".$_POST['username']."',
content='".$_POST['content']."'
where id=".intval($_POST['id']);
复制内容到剪贴板
代码:
<?php   
require('common.php');   
if ($_GET['action']=='save') {   
    // 清除空格   
    $_POST['username'] = trim($_POST['username']);   
    $_POST['content'] = trim($_POST['content']);   
    if (!get_magic_quotes_gpc()) {// 如果魔术引号关闭使用addslashes转换   
        $_POST['username'] = addslashes($_POST['username']);   
        $_POST['content'] = addslashes($_POST['content']);   
    }   
    // 判断表单是否全部填写   
    if (!$_POST['username'] || !$_POST['content']) {   
        echo '请输入用户名和内容!';   
        exit;   
    }   
    // 判断用户名是否超出长度   
    if (strlen($_POST['username'])>16) {   
        echo '用户名超出长度!';   
        exit;   
    }   
    // 判断内容是否超出长度   
    if (strlen($_POST['content'])>255) {   
        echo '内容超出长度!';   
        exit;   
    }   
      
    // update SQL语句   
    $sql = "update gb_content set   
            username='".$_POST['username']."',   
            content='".$_POST['content']."'  
            where id=".intval($_POST['id']);   
    mysql_query($sql,$link);// 执行SQL查询   
    echo '修改成功!<a href="index.php">查看留言</a>';   
    exit;   
}   
// 读取数据   
$result = mysql_query('select * from gb_content where id='.intval($_GET['id']));   
$row = mysql_fetch_array($result, MYSQL_BOTH);   
if (!$row) {// 数据不存在   
    echo '数据不存在!';   
    exit;   
}   
?>   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
<title>修改留言</title>   
<link rel="stylesheet" type="text/css" href="style.css" media="all" />   
</head>   
  
<body>   
<table width="500" border="0" cellspacing="0" cellpadding="0" class="tb">   
  <tr>   
    <td class="bg"><b>[修改留言]</b></td>   
  </tr>   
  <tr>   
    <td><form id="form1" name="form1" method="post"  action="edit.php?action=save">   
    <input type="hidden" name="id" value="<?php echo $row['id'] ?>" />   
        <table width="500" border="0" cellspacing="0" cellpadding="0">   
          <tr>   
            <td width="12%">用户名:</td>   
            <td width="88%"><input type="text" name="username" value="<?php echo htmlentities($row['username']) ?>" /></td>   
          </tr>   
          <tr>   
            <td width="12%">内容:</td>   
            <td width="88%"><textarea name="content" cols="40" rows="6"><?php echo htmlentities($row['content']) ?></textarea>            </td>   
          <tr>   
            <td width="12%"></td>   
            <td width="88%"><input type="submit" name="submit" value="提 交"  /></td>   
          </tr>   
        </table>   
      </form></td>   
  </tr>   
</table>   
</body>   
</html>  

TOP

 36 1234
发新话题