我的小小留言板已经正式上线了,不过在实际使用中遇到了不少问题:没有内容验证!
对!留言的用户还没填写留言信息的时候失误点击了“发布留言”按钮,导致我的留言板充斥了不少“网络垃圾”。
正好我今天学习了 if...else...语句 和 逻辑运算符 ,我们来对publish.php进行小小的改造,让他不再接受空内容。
<?php // if...else... 语句 if ( 条件 ) { 语句1; } else { 语句2; } //条件为真执行语句1,否则执行语句2 ?>
//逻辑运算符 //下面这是从PHP.Net的PHP手册中抄过来的 $a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。 $a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。 $a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。 ! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE。 $a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。 $a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
好了,上边是基础知识,下面我们就拿 publish.php 开刀手术,进行一个小小的改造:
1 #publish.php 2 3 <?php 4 //读取配置文件 5 include("config.php"); 6 7 //读取表单填写的内容 8 $name = $_POST['name']; 9 $email = $_POST['email']; 10 $content = $_POST['other']; 11 12 //-------------------------------------------- 13 //-判断表单提交的内容是否为一些我们不想要的值- 14 //-------------------------------------------- 15 if( 16 !( $name == '名字' 17 or $name == '' 18 or email == '电子邮件' 19 or email == '' 20 or content == '在这里输入留言的内容' 21 or content == '' 22 ) 23 ) 24 { 25 //连接数据库 26 $dbc = mysqli_connect($db_server_addr, $db_username, $db_password, $db_database) 27 or die('Error Connect to MySQL Server.'); 28 29 //获得SQL语句: 获取表格中ID最大值 30 $query = "select max(id) from $db_table_name"; 31 32 //向数据库请求 33 $result = mysqli_query($dbc, $query); 34 35 //验证表中是否有内容 36 if($row = mysqli_fetch_array($result)) 37 { 38 //如有ID,将现有ID自增1 39 $id = $row['max(id)'] + 1; 40 }else{ 41 //如无ID,将ID设为1 42 $id = 1; 43 } 44 45 //获取当前日期时间信息 46 $datetime = date('Y-m-d H:i:s',time()); 47 48 //向数据表中添加数据 49 $query = "insert into $db_table_name (id, datetime, name, email, content) values ('$id', '$datetime', '$name', '$email', '$content');"; 50 51 $result = mysqli_query($dbc, $query); 52 53 //关闭数据连接 54 mysqli_close($dbc); 55 56 //跳转回留言板首页 57 echo "<script>location.href='index.php';</script>"; 58 59 } else { 60 echo "对不起,您填写的信息有误,请<a href=\"index.php\">返回</a>查看"; 61 } 62 63 ?>
下边是我们做的小测试:
Look! It works!
if..else...语句和逻辑运算符的应用非常广泛,成功没有捷径,大家多多练习吧~