首页 > 编程技术 > php

php留言板制作教程

发布时间:2016-11-25 15:04

本文章给各位php入门者提供一篇从数据库的创建到最后的读写留言板过程全部分享给各位朋友,有需要了解的可参考参考。

创建一个数据表

 代码如下 复制代码

CREATE TABLE `message` (

`id` tinyint(1) NOT NULL auto_increment,

`user` varchar(25) NOT NULL,

`title` varchar(50) NOT NULL,

`content` tinytext NOT NULL,

`lastdate` date NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;

数据库连接文件

数据库连接的代码比较固定。先新建一个conn.php文件,输入下面代码:

 代码如下 复制代码

<?php

$conn =  mysql_connect("localhost", "root", "") or die("数据库链接错误");

mysql_select_db("test", $conn);

mysql_query("set names ‘GBK'"); //使用GBK中文编码;

?>

编写发表留言页面文件
新建文件add.php,输入如下代码:

 代码如下 复制代码

<?php

include("conn.php");

if($_POST['submit']){

$sql="insert into message (id,user,title,content,lastdate) values (",'$_POST[user]‘,'$_POST[biaoti]‘,'$_POST[content]‘,now())";

mysql_query($sql);

echo "成功发表!";

}

?>

</table>

<br />

<h2>发表留言框</h2>

<form action="add.php" method="post" >

用户:

<input type="text" name="user" size="10" /><br />

标题:

<input type="text" name="biaoti" size="20" /><br />

<textarea name="content" rows="10" cols="50" wrap="off">

</textarea><br />

<input type="submit" name="submit" value="发表"/>

</form>


编写留言列表文件
新建文件list.php,输入如下代码:

 代码如下 复制代码

<?php

include ("conn.php");

?>

<table width="500px" border="0" alien="center" >

<?php

$sql="select * from message ";

$query=mysql_query($sql);

while($row=mysql_fetch_array($query)){  ?>

<tr><td>标题: <?php echo $row['title'];?> 用户:<?php echo $row['user'];?></td></tr>

<tr><td>发表内容:<?php echo $row['content'];?></td></tr>

<?php } ?>

</table>

注意,这只是一篇入门类型的php教程,如果你想用于网络请做一些安全与sql注入过滤哦,否则会很不安全的哦。

有朋友问我打开php文件的软件呢,下面我来给大家详细介绍人php文件是什么文件以及怎么打开php文件吧,有需要了解的朋友可参考.

什么是php文件

PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。

一段php代码

 代码如下 复制代码

<?php
namespace Math
{
class Complex
{
//...code...
function __construct()
{
print("hey");
}
}
}
$m = new Math::Complex();
?>

php文件用什么打开

php文件打开软件有很多很多,只要是编辑软件都可以用一打开php文件哦,如:记事本,DW,fontpage等等都可以打开

php怎么运行

php是超文本预处理语言,我们需要php支持环境才行,如:apache+php环境或是iis+php环境都可以运行php哦。

在php中rawurlencode与rawurlencode都是对字符进行编码的,下面我来给大家介绍urlencode和rawurlencode的区别,有需要了解的朋友可参考。

urlencode的用途就是编码字符串,把原字符串中所有除”-_”以为的非所有字母数字字符替换成百分号(%)后跟两位十六进制数,但是需要注意:由于历史原因会把空格替换+号。rawurlencode其实和urlencode一样,也是用来编码字符串的,唯一的不同是它是使用RFC1738 编码,也就是会把空格替换成%20。

它们对应的解码函数是urldecode和rawurldecode。参考官方网站的说明,urldecode解码给出的已编码字符串中的任何%##,加号(’+')被解码成一个空格字符;rawurldecode解码字符字符串中百分号(%)后跟两位十六进制。有两点区别,一是urldecode解码是对百分号(%)后任意两位字符都去会进行解码,例如%MN也会解码,但是会失败;rawurldecode则只会对百分号(%)后两位是十六进制(0-9A-F)的字符才会解码,二是urldecode会把+号解码为空格。

我们再看来两个函数在php官方的介绍吧。

urlencode — 编码 URL 字符串

Report a bug 说明
string urlencode ( string $str )
此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。

Report a bug 参数

str
要编码的字符串。

Report a bug 返回值
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。

 代码如下 复制代码

Example #1 urlencode() 例子

<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>


Example #2 urlencode() 与 htmlentities() 例子

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

rawurlencode — 按照 RFC 1738 对 URL 进行编码

Report a bug 说明
string rawurlencode ( string $str )
根据 » RFC 3986 编码指定的字符。

Report a bug 参数

str
要编码的 URL。


Report a bug 返回值
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 » RFC 3986 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。

 代码如下 复制代码

Example #1 在 FTP URL 里包含一个密码

<?php
echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
     '@ftp.example.com/x.txt">';
?>
以上例程会输出:

<a href="ftp://user:foo%20%40%2B%25%2F@ftp.example.com/x.txt">

通过上面对解码函数的描述,可以推论,使用urlencode或rawurlencode编码的都可以使用urldecode进行解码,但是如果原字符串中含有空格,使用urlencode编码后的字符串使用rawurlencode解码后获得的字符串会和原字符串不同。

strcmp()函数的使用是比较两个字符串,如果两个字符串完全相等我们就返回0,否则就会有各种返回值,此函数并区分大小写,有需要的朋友可参考。

对比后返回值说明

如果str1 和str2 相等则返回0 。
如果str1小于str2则返回<0(但不一定时-1,网上好多都说是-1,是不对的,具体数值大小根据实际情况而定) 。
如果str1大于str2则返回>0(但不一定时1,具体数值大小根据实际情况而定) 。

 代码如下 复制代码

strcmp(date(‘Y-m-d’,$user->last_time), date(“Y-m-d”,time())) == 0

如果要不区别大小写

strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:

 代码如下 复制代码

echo strncasecmp("abcdd", "abcde", 3);

// 返回 0, 比较了 abc 和 abc, 由于不区分大小写,所以两者相同

php字符串比较我们还可以使用 ==来,如

 代码如下 复制代码

$a='aa';
$b='www.111cn.net';

if( $a == $b )
{
 echo '相等';
}
else
{
echo '不等';
}

还可以使用===来比较

 代码如下 复制代码

22 == "22"; // 返回 true
22 === "22"; // 返回false

我们知道sprintf() 函数把格式化的字符串写写入一个变量中,我们经常会看到这类代码了,下面我来介绍sprintf() 函数使用方法,有需要的朋友可参考参考。

用法

sprintf(format,arg1,arg2,arg++)

说明
参数 format 是转换的格式,以百分比符号 ("%") 开始到转换字符结束。下面的可能的 format 值:

•%% - 返回百分比符号
•%b - 二进制数
•%c - 依照 ASCII 值的字符
•%d - 带符号十进制数
•%e - 可续计数法(比如 1.5e+3)
•%u - 无符号十进制数
•%f - 浮点数(local settings aware)
•%F - 浮点数(not local settings aware)
•%o - 八进制数
•%s - 字符串
•%x - 十六进制数(小写字母)
•%X - 十六进制数(大写字母)
arg1, arg2, ++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的。在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

我在微信开放平台会看到如下代码

 代码如下 复制代码

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
    $msgType = "text";
                $textTpl = "<xml>
       <ToUserName><![CDATA[%s]]></ToUserName>
       <FromUserName><![CDATA[%s]]></FromUserName>
       <CreateTime>%s</CreateTime>
       <MsgType><![CDATA[%s]]></MsgType>
       <Content><![CDATA[%s]]></Content>
       <FuncFlag>0</FuncFlag>
       </xml>";            
    if(!empty( $keyword ))
                {
                
                 $contentStr = $this->keyrep($keyword);
     if(  empty($contentStr) )
     {
      $contentStr ="你是故意的吧,没文化真可怕";//你是故意的吧,没文化真可怕;
     }
     //$contentStr = @iconv('UTF-8','gb2312',$keyword);
                 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                 echo $resultStr;
     
                }else{
                 $contentStr = '没文化真可怕,居然不会打字!';//$this->keyrep($keyword);
                 //$contentStr = @iconv('UTF-8','gb2312',$keyword);
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                 echo $resultStr;
                }

上面用到的是xml中了,下面再看一个网友写的例子

 代码如下 复制代码


<?php
 /**
  *        sprintf()函数使用
  *        @date 2012-12-17
  *        @author cntnn11
  */
  /**
  *        手册定义:函数把格式化的字符串写写入一个变量中。
  *        他的可识别的格式
  *            %% - 返回百分比符号
  *            %b - 二进制数
  *            %c - 依照 ASCII 值的字符
  *            %d - 带符号十进制数
  *            %e - 科学计数法(比如 1.5e+3)
  *            %u - 无符号十进制数
  *            %f - 浮点数(local settings aware)
  *            %F - 浮点数(not local settings aware)
  *            %o - 八进制数
  *            %s - 字符串
  *            %x - 十六进制数(小写字母)
  *            %X - 十六进制数(大写字母)
  *        sprintf($str, arg1, arg2, arg3 ...);
 */
 
 /**
 *    1.    %%
 *        把%%替换成%
 */
 $testStr    = '测试下%%这个参数。会被替换成什么呢';
 echo sprintf($testStr),'<br/>';
 //-> 测试下%这个参数。会被替换成什么呢;
 //只剩下一个%了
 //看来还真的只是返回一个‘%’。但是实际应用中该怎么用呢?
 //我也不知道~
 echo '<br/><hr/><br/>';
 /**
 *    2.    %b
 *        该参数只能替换整型数据。如果是浮点型,那么他只会取整数部分。小数点后边的会忽略
 *        如果是一个非整型数据,那么返回 0
 */
 $testStr    = '听说%b会替换成二进制数,真的吗?';
 $arg        = '10';
 echo sprintf($testStr, $arg),'<br/>';
 //-> 1010;    $arg=10;    真的替换了!
 //-> 101;    $arg=4.5
 //-> 0;        $arg=str/bool...
 echo '<br/><hr/><br/>';
 
 /**
 *    3.    %c 返回字符编码的ASCII码
 *        TIP:[他不是返回ASCII码]
 *        $arg接受一个int传入即ASCII的数字值,然后返回该值对应的字符
 */
 $testStr    = '我们来测试下 %c : 试试看能返回ASCII码吗';
 $arg    = '122';
 echo sprintf($testStr, $arg);
 //-> A;    $arg=65;
 //-> z; $arg=122
 echo '<br/><hr/><br/>';
 /**
  *    4. %d 将一段字符里的%d替换成int型
  *        TIP:这里可以是任意一个int整型。
  *            如果是一个浮点数据,那么只会替换整数部分
  *            如果是非数字的,那么会替换成0
  */
 $testStr    = "这是一个ID,ID号是%d,";
 $arg        = '-4';
 echo sprintf($testStr, $arg);
 //-> 4;    $arg=4.5
 //-> 0; $arg=[a-zA-Zs];
 echo '<br/><hr/><br/>';
 
 /**
  *    5.    %e 科学计数法
  *        TIP:将一段很长很长的int整型数据以科学计数法的形式呈现
  *            同%d,该函数同样会忽略掉小数点后面的,任何非数值数据替换成0
 */
 $testStr    = "我很长,有N多位。。。 %e";
 $arg        = '46498464654864564642449463699789789313';
 echo sprintf($testStr, $arg);
 //-> 4.649846e+14;    $arg=464984646548645.64642449463699789789313
 //-> 0.000000e+0; $arg=asdfasdf;
 echo '<br/><hr/><br/>';
 
 /**
  *    5.    %u - 无符号十进制数
  *        不明白。。。如果有是负数,他的值不知道是啥值
 */
 $testStr    = "我是无符号的十进制数。。。 %u";
 $arg        = '456';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    6.    %f - 浮点数(local settings aware)
  *            难道和%d是相反的?
  *                这个会返回一个浮点数,并且小数点后面只有固定的6位
  *                字符串同样为 0 ;
 */
 $testStr    = "和那个d有啥区别呢?%f";
 $arg        = '456.235645';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    7.    %F - 浮点数(not local settings aware)
  *        难道和%f是相反的?怎么和小f没区别?不会吧
  */
 $testStr    = "和那个小写的f有啥区别呢?%F";
 $arg        = '12312316.46898';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    8.    %o - 八进制数
  *        同%d一样。只不过参数传入一个八进制数值
  */
 $testStr    = "将八进制数替换成十进制的 %o";
 $arg        = '8';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    9.    %x - 十六进制数(小写字母)
  *        同%d/%o一样。只不过参数传入一个小写字母的十六进制数值
  */
 $testStr    = "将十六进制数替换成十进制的 %o";
 $arg        = '456d12';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    10.    %X - 十六进制数(大写字母)
  *        同%d/%o/%x一样。只不过参数传入一个大写字母的十六进制数值
  *        貌似%x %X两个字母大小写没区别...
  */
 $testStr    = "将大写字母的十六进制数替换成十进制的 %o";
 $arg        = '456D12';
 echo sprintf($testStr, $arg);
 echo '<br/><hr/><br/>';
 
 /**
  *    11.    %s - 字符串
  *        用你传入的字符串替换掉%s
  */
 $string    = "这是用来测试的sprintf的字符串( %s )。今天消费了%f元。从西二旗到知春路有%d站。上班";
 $arg    = '';
 echo sprintf($string, $arg, 234, 10);
 echo '<br/><hr/><br/>';
 
 
  ?>

标签:[!--infotagslink--]

您可能感兴趣的文章: