php笔记4.5.操作mysql数据库、session防盗链

版权声明:本文为博主原创文章,转载请声明原创网址。 https://blog.csdn.net/lagoon_lala/article/details/89434357

实验四:验证用户是否已存在

目的:

       熟悉使用select完成按条件查询数据

实验内容:

在上次作业的基础上,实现注册前验证用户名是否已经存在的功能:

如果当前注册的账号名在数据库中已经存在,则提示以下信息:

如果不存在,向数据表中插入记录后并提示注册成功(插入的用户密码要求是经过md5加密后的)

 

用户注册链接数据库

https://blog.csdn.net/tanlangqie/article/details/80685429

https://blog.csdn.net/qq_35661627/article/details/78564319

  1. 实现注册功能首先必须要有一个可视化的表单—-包含用户名,密码,重复密码等;
  2. 其次我们要将注册的用户信息存储起来,所以还需要用到mysql数据库;
  3. 最后需要一个浏览器来可视化表单以及PHP执行的结果。

<html>

<head>

    <meta charset="utf-8" />

    <title>用户注册</title>

</head>

<body>

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

    用户名:<input type="text" name="username"> <br />

    密码:<input type="password" name="password"> <br />

    重复密码:<input type="password" name="repassword"> <br />

    <input type="submit" value="提交">

</form>>

</body>

</html>

有了可视化的表单以后,就要考虑数据存储的问题了。加入我们要将用户的信息存储到user表中,我们首先得在数据库中创建user表。代码如下:

CREATE TABLE `user` (

 

  `id` int(32) NOT NULL AUTO_INCREMENT,

 

  `username` varchar(30) DEFAULT NULL,

 

  `password` varchar(32) DEFAULT NULL,

 

  `createtime` int(80) DEFAULT NULL,

 

  `createip` varchar(60) DEFAULT NULL,

 

  PRIMARY KEY (`id`)

 

) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

connect.php

<?php

/**

 * Created by PhpStorm.

 * User: Administrator

 * Date: 2018/6/13

 * Time: 19:52

 */

 

 

if (trim($_POST['password']) != trim($_POST['repassword'])) {

 

    exit('两次密码不一致,请返回上一页');

 

}

 

$username = trim($_POST['username']);

 

$password = md5(trim($_POST['password']));

 

$time = time();

 

$ip = $_SERVER['REMOTE_ADDR'];

 

$conn = mysqli_connect('localhost', 'root', 'password');     

 

//如果有错误,存在错误号

if (mysqli_errno($conn)) {

 

    echo mysqli_error($conn);

 

    exit;

}

 

mysqli_select_db($conn, 'test');   //选择数据库

 

mysqli_set_charset($conn, 'utf8');   //选择字符集

 

$sql = "insert into user (username,password,createtime,createip) values('$username','$password', '$time' ,'$ip' )";

 

$result = mysqli_query($conn, $sql);

 

if ($result) {

    echo '成功';

} else {

    echo '失败';

 

}

 

echo '当前用户插入的ID为' . mysqli_insert_id($conn);

 

mysqli_close($conn);

 

?>

查询信息

 

//从数据库中提取用户注册信息

$userSQL = "select * from users where user_id=$userID";

$userResult = mysql_query($userSQL);

if($user = mysql_fetch_array($userResult)){

     echo "您注册的用户名为:".$user["userName"]."<br/><br/>";

     echo "您填写的登录密码为:".$user["password"]."<br/><br/>";

     echo "性别:".$user["sex"]."<br/><br/>";

     echo "爱好:".$user["interests"]."<br/><br/>";

     $pictureAdrees="uploads/".$myPictureName;

     echo "上传的照片:";

     echo '<img src="'.$pictureAdrees.'"  width="200px">';

     echo "<br/><br/>";

     echo "备注信息:".$user['remark'];

}else{

     exit("用户信息注册失败!");

}

 

 

完整报错提示:Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given

 

$data = mysqli_query($dbc, $query);后加上这样一段代码,就能清楚的知道查询出现了什么问题,

if (!$data) {

 printf("Error: %s\n", mysqli_error($dbc));

 exit();

}

插入失败,尝试插入语句:

insert into user (username,password,gender,birth_y,birth_m,picture) values('123456','1234aa', '男' ,'1990','1','/homeworkRegister/8bb60abcf5a8fcc3db775abbb8978cc65d60885e.jpeg' );

字段名有错

查询不到

select * from user where id='3';

 

实验五:登录功能实现

目的:

       熟悉使用select语句完成登录功能

实验内容:

在上次作业的基础上,完成登录页面。

1、制作登录页面(login.php),并将该页面链接到“管理登录”上:

2、当用户点击“登录”按钮后,页面会将数据提交到“loginverify.php”。在“loginverify.php”页面实现以下功能:

(1)验证用户名是否为空

(2)验证密码是否为空

 

(3)使用select语句从数据库中验证用户名和密码是否正确,如果不正确,显示:

   4)如果用户名和密码正确,则显示登录成功,并提供跳转到首页的链接:

htmldiv加超链接实现点击div跳转的方法

1.通过window.open函数
<div onclick="window.open('http://blog.sina.com.cn/yangguangjianyu');"></div>
<div onclick="window.open(*http://www.baidu.com*,*_self*)">在当前窗口跳转至百度</div>
2.
通过window.location.href函数
<div onclick="window.location.href= *http://www.baidu.com*;return false">在当前窗口跳转至百度</div>

 

实验六:签写留言功能实现(一):页面制作

目的:

       熟悉使用insert语句完成数据表中数据的插入和使用session来验证用户的登录状态

实验内容:

在上次作业的基础上,完成签写留言页面。

1、制作签写留言页面(add.php),并将该页面链接到所有的“签写留言”上:

2、当用户填写完信息后,点击“确定”按钮后,跳转到留言验证页面(addverify.php),该页面可以完成:

可验证标题和内容是否为空。若有一项为空则提示错误信息:

  

实验六:签写留言功能实现(二):加入用户权限管理及注销功能

目的:

       熟悉使用insert语句完成数据表中数据的插入和使用session来验证用户的登录状态

实验内容:

1、在上次作业的基础上,为签写留言页面(add.php)添加用户访问权限控制功能,要求只有处于登录状态的用户才能访问add.php页面。例如:

(1)如果用户没有登录就访问add.php页面,会自动提示弹出提示框“请先登录”,并且将页面跳转至登录页(login.php),如图:

  2)若用户已经登录,则显示留言页,并将所有页面导航中的“管理登录”修改为:“退出(用户名)”,并将链接指向“loginout.php

2、完成“用户退出”功能:该功能只对登录用户开放。当登录用户点击“退出(用户名)”链接时,会跳转到注销页面(loginout.php),该页面会清空存放用户名的session变量,并提示“注销成功”:

3、将留言内容插入数据表

   addverify.php页面中如果接收到的标题和内容均不为空时,将标题、内容、获取的系统时间以及当前登录的用户名(可以从session中获取)存入数据库“liuyan”表中,并显示留言成功。

 

 

提示:php获取系统时间的方法

date_default_timezone_set('Asia/Shanghai'); //将时区设置为上海时区

$datetime = date("Y-m-d   H:i:s",time()); //获取系统时间并设置相应格式

Session登陆:

http://www.php.cn/jishu/php/411620.html

查询数据库db.php

<?php

 

$dbName = 'demo';

$host = '127.0.0.1';

$user = 'root';

$password = 'root';

 

$dsn = "mysql:host=$host;dbname=$dbName";

$pdo = new PDO($dsn, $user, $password);

 

function sql($table, $field = '*', $where = '')

{

    global $pdo;

    $sql = 'select' . ' ' . $field . ' ' . 'from' . ' ' . $table . ' where ' . $where;

    $data = $pdo->query($sql)->fetch();

    return $data;

}

 

检验用户登录信息的代码示例:check.php

<?php

session_start();

include "db.php";

@$name = $_POST['username'];

@$pas = $_POST['password'];

 

$row = sql('user', '*', "username = '$name'");

if (!$row) {

    return "用户名不存在!请检查用户名~~";

}

 

if ($row['password'] == $pas) {

    $_SESSION['username'] = "$name";

    echo "<script>

    alert('登录成功!正在跳转...')

</script>";

    echo "<a href='index.php'>如果跳转失败请点击跳转~~</a>";

    header("Refresh:1;url=index.php");

}

登录成功后跳转的页面代码示例:

index.php

<?php

echo "<h1>这里是主页</h1>";

session_start();

$name = $_SESSION['username'];

if ($name) {

    echo "<script>

     alert(\"尊敬的$name ,欢迎回来!!\");

</script>";

}else{

    echo "<script>

    alert('您还尚未登录!请返回登录~~')

</script>";

    echo "<a href='index.php'>如果跳转失败请点击跳转~~</a>";

    header("Refresh:1;url=login.html");

}

Echo时单双引号嵌套

里面的加转义\

判断session中有没有值

<?php

// 正确,检查flag下标是否设置

if (isset($_SESSION['flag'])) ...

// 错误,会导致警告,下标不存在

if ($_SESSION['flag']) ...

// 存储一个session值

$_SESSION['flag'] = 1;

// 删除一个session值

unset($_SESSION['flag']);

PHP防盗链的实现方法

https://www.baidu.com/link?url=qu_jK5fBlB2xZSpk5BcjQLJRmluv2ilyJx1g1S-ygGqwrFOeO2WhZAx0mIhmIwbgy1Y7IXsLHH4f-zRY5A8Q-_&wd=&eqid=970317e5000301b3000000035cbbf8f9

弹框

echo '<script language="JavaScript">;alert("这是");location.href="index.htm";</script>;';

 完整工程下载地址:https://download.csdn.net/download/lagoon_lala/11133388

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/lagoon_lala/article/details/89434357