PHP学习之路

PHP的概念:是一个被广泛利用的脚本文件,主要用于动态页面的开发

     以下几点是自己在学PHP时的有一些学习的知识点

  1. PHP的变量主要对于一些超全局变量的使用
  2. PHP和HTML混合编程的使用(里面有很多的坑,例如:一些格式,foreach,if等判断语句,和循环语句的使用,当然对于使用有PHP代码提示的编译软件就是相当的简单,但是作为初级程序员,还是要多敲代码,有利于自我的提示)
  3. PHP最重要的特点,函数语言,1000多个内置函数,不需要记,多查文档,多练习就好
  4. PHP和Apache的联合使用。对于Apache的安装配置,特别是配置文件里面的设置。
  5. PHP结合HTML中的表单(form)的使用,可以说使用的最多的,GET和POST的请求的不同,通过form表单上传的数据存放的数据类型,学会利用php中输出数据var_dump(),可以让自己更好的理解如何编写后续的代码,要注意自己代码的鲁棒性
    <?php
    //判断请求的方式,从而决定是否决定执行对数据的处理
        if($_SERVER['REQUEST_METHOD']==='POST'){
                   var_dump($_POST);
               }
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
           <!--由于文件重命名会导致修改,鲁棒性不强-->
            <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
                <div>
                    <label for="username">用户名</label>
                    <input type="text" id="username" name="username">
                </div>
                <div>
                    <label for="password">密码</label>
                    <input type="password" id="password" name="password">
                </div>
                <button type="submit">登录</button>
    
            </form>
    </body>
    </html>
  6. PHP和JSON的使用,就是文件函数的使用,还有json的序列化和反序列化函数的使用

PHP和数据库的使用,相比于其他后台语言,不得不说PHP特别好用,一连串的函数,就可以和数据库之间建立连接

 

mysqli_connect()-->mysqli_query() ----mysqli_fetch_assoc() 或者是mysqli_affected_rows()  (对于mysqli有可能php.ini的配置文件没有删掉注释,删掉注释就行了),做一个简单的管理系统(增删改查),跟着教程做的,在做的过程中有几个点我认为还是蛮重要的  增加页面:要注意文件路径的存放问题,使用绝对路径

//路径的移动
    //删除图片的名称
     $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
      // => jpg
      $target = '../curd/assets/img/' . uniqid() . '.' . $ext;

      if (!move_uploaded_file($image['tmp_name'], $target)) {
        $GLOBALS['error_message'] = '上传头像失败';
        return;
      }

      //
      $avatar = substr($target, 2);

编辑,删除页面页面:对于如何获取编辑的是哪个对象时利用到了a标签的请求方式是GET请求,然后可以获取当前编辑对象的id;

<a class="btn btn-info btn-sm" href="update.php?id=<?php echo $item['id'] ?>" id=<?php echo $item['id']?>>编辑</a> 注意herf后面?后面跟的数据                                                               
编辑页面的逻辑判断也是一个重难点:第一次从用户界面到编辑界面是GET方式,在编辑页面的保存时POST方式,需要注意,此处的逻辑判断,还有一个图片上传和新增图片上传的区别,下面是编辑页面的代码:
<?php
//function get(){
  //var_dump($_GET['id']);
 if (empty($_GET['id'])) {
     exit('<h1>必须传入指定参数</h1>');
 }

  $id = $_GET['id'];

  // 1. 建立连接
  $conn = mysqli_connect('127.0.0.1', 'root', '123456', 'test');

  if (!$conn) {
    exit('<h1>连接数据库失败</h1>');
  }

   // 2. 开始查询
   // 因为 ID 是唯一的 那么找到第一个满足条件的就不用再继续了 limit 1
  $query = mysqli_query($conn, "SELECT * FROM users WHERE id = {$id} LIMIT 1 ;");

 if (!$query) {
   exit('<h1>查询数据失败</h1>');
 }
  //超全局变量,获取已有数据
  //$GLOBALS['user'] = mysqli_fetch_assoc($query);
  $user = mysqli_fetch_assoc($query);
  var_dump($user);

  if (!$user) {
      exit('<h1>找不到你要编辑的数据</h1>');
   }
  function edit(){
             global $user;
            //$name = $_POST['name'];
            if(empty($_POST['name'])){
              $GLOBALS['error_message'] = '请输入添加的用户名称';
              return;
            }
            //$gender = $_POST['gender'];
            if(!(isset($_POST['gender'])&&$_POST['gender']!='-1')){
                $GLOBALS['error_message'] = '请选择性别';
                return;
            }
            //$birthday = $_POST['birthday'];
            if(empty($_POST['birthday'])){
                $GLOBALS['error_message'] = '请输入生日';
                return;
            }
            //数据的存放路径
            $user['names'] = $_POST['name'];
            $user['gender'] = $_POST['gender'];
            $user['birthday'] = $_POST['birthday'];
            //有图片就上传,没有图片文件,就用原始文件
            //$head = isset($_FILES['images'])&&$_FILES['images']['error'] === UPLOAD_ERR_OK);
             if (isset($_FILES['images']) && $_FILES['images']['error'] === UPLOAD_ERR_OK){
                    //用户上传一个新头像
                      $image =$_FILES['images'];
                      $allowed_types1 = array('image/jpeg', 'image/png', 'image/gif');
                        if (!in_array($image['type'], $allowed_types1)) {
                              $GLOBALS['error_message'] = '这是不支持的图片格式';
                              return;
                        }
                        //大小的判断
                        if($image['size']>5*1024*1024){
                            $GLOBALS['error_message'] = "图片大小过大";
                            return;
                        }
                        //路径的移动
                        //删除图片的名称
                         $ext = pathinfo($_FILES['images']['name'], PATHINFO_EXTENSION);
                          // => jpg
                          $target = '../curd/assets/img/' . uniqid() . '.' . $ext;

                          if (!move_uploaded_file($image['tmp_name'], $target)) {
                            $GLOBALS['error_message'] = '上传头像失败';
                            return;
                          }
                          //存放数据使用,绝对路径
                          var_dump("运行
                          ");
                          $user['images']  = substr($target, 2);
                          //var_dump($user['images']);
            }
                  //var_dump($user['avatar']);
                  var_dump($user);
                 // 1.建立连接
                 $connect = mysqli_connect('127.0.0.1','root','123456','test');
                 //2.运输物资
                 //UPDATE users SET images ='/curd/assets/img/icon-08.png' , names='张三丰' ,gender = 0 WHERE id =24;
            $query = mysqli_query($connect,"UPDATE users SET images ='{$user['images']}' , names='{$user['names']}' ,gender = {$user['gender']},birthday = '{$user['birthday']}'WHERE id ='{$user['id']}';");



   }
if($_SERVER['REQUEST_METHOD']=== 'POST') {
    edit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>编辑页面</title>
  <link rel="stylesheet" href="bootstrap.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <nav class="navbar navbar-expand navbar-dark bg-dark fixed-top">
    <a class="navbar-brand" href="#">管理编辑页面</a>
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="01-indext.php">用户管理</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">商品管理</a>
      </li>
    </ul>
  </nav>
  <main class="container">
    <h1 class="heading">编辑“<?php echo $user['names']; ?>”</h1>
    <form action="<?php echo $_SERVER['PHP_SELF'];?>?id=<?php echo $user['id']; ?>" method="post" enctype="multipart/form-data" >
      <div class="form-group">
        <label for="images">头像</label>
        <input type="file" class="form-control" id="avatar" name="images">
      </div>
      <div class="form-group">
        <label for="name">姓名</label>
        <input type="text" class="form-control" id="name" value="<?php echo $user['names']; ?>"  name="name">
      </div>
      <div class="form-group">
        <label for="gender">性别</label>
        <select class="form-control" id="gender"  name="gender">
          <option value="-1">请选择性别</option>
          <option value="1"<?php echo $user['gender'] === '1' ? ' selected': ''; ?>>男</option>
          <option value="0"<?php echo $user['gender'] === '0' ? ' selected': ''; ?>>女</option>
        </select>
      </div>
      <div class="form-group">
        <label for="birthday">生日</label>
        <input type="date" class="form-control" id="birthday" name="birthday" value="<?php echo $user['birthday']; ?>">
      </div>
      <button class="btn btn-primary">保存</button>
    </form>
  </main>
</body>
</html>

最后是对cookie的简单使用,

    cookie:HTTP 很重要的一个特点就是无状态(每一次见面都是“初次见面”),如果单纯的希望通过我们的服务端程序去记 住每一个访问者是不可能的,所以必须借助一些手段或者说技巧让服务端记住客户端,这种手段就是 Cookie

cookie的一些属性:见下图

 

 

        PHP可以用$_COOKIE[' key '] 获取设置的cookie值

       cookie类似于生活中的小票 ,但是不安全,容易被客户端看到;

     由于 Cookie 是服务端下发给客户端由客户端本地保存的。换而言之客户端可以在本地对其随意操作,包括删除和 修改。如果客户端随意伪造一个 Cookie 的话,对于服务端是无法辨别的,就会造成服务端被蒙蔽,构成安全隐 患。
于是乎就有了另外一种基于 Cookie 基础之上的手段:Session:

      Session 区别于 Cookie 一个很大的地方就是:Session 数据存在了服务端,而 Cookie 存在了客户端本地,存在服 务端最大的优势就是,不是用户想怎么改就怎么改了。

      最后说一句写的不是蛮好,请谅解,文章有什么错误,多谢到你能指出来,我会加以改正
 

 

       

 

                                           

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值