登录
转载

PHP与前端协作模式的理解(和PHP基础)

发布于 2021-05-13 阅读 324
  • 前端
  • JavaScript
  • HTML
转载

PHP与前端协作模式的理解(和PHP基础)

前言-关于PHP

刚学完PHP那时候就想写篇文,但是无奈我那可怜的PHP学的实在是拿不出手(实际上我的PHP学了三周才勉强学完)那些天考试又多,难得今天有空,就把笔记拿出来扒一遍熟悉熟悉,把它写出来吧。 有几个部分是基于对基础JavaScript与PHP的类比来进行说明的,如果您还没有进行过对基础JavaScript语法的学习,可能阅读会有些许障碍 :·( 不过其他部分应该不会有问题。


@[TOC](文章目录)

一、写在甚麽地方?怎么配合其他代码?

1.在PHP文档里写PHP

放在专门的后缀为“.php”的文件里。

2.在HTML文档里写PHP

或者你可以把它放在你的前端HTML文档中但是你必须把它放在“<? ?>”内部,只有那里面能写PHP代码,其他的各写各的,互不干扰,您只要记住php要写在这里面就好了。

像是这样:

<?php
//连接数据库
$link = mysql_connect("localhost", "username", "password")
or die("Could not connect: " . mysql_error());
print ("Connected successfully");
//选择数据库
mysql_select_db('dbname', $link) or die ('Can\'t use db : ' . mysql_error());
//进行你想要的操作
$a =123;
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>发现I Do一刻</title>
<link href="css/public.css" rel="stylesheet" type="text/css">
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<?php
echo $a;
?>
</body>
</html>

3.在PHP文档里写HTML

不太一样的是在PHP文档里对HTML框架进行填充时,要采用如下格式: ‘HTML内容’ . PHP内容. 'HTML’内容‘

看着不太好明白,实际上就是HTML部分作为字符串的形式引入PHP文档中。 PHP文档也能解析html代码,这些html代码会跟随着PHP文档在服务端执行。但是要填充HTML框架,HTML语法需要作为字符串和php语句进行字符串拼接,用php拿来的数据对HTML进行填充。在PHP中,字符串拼接使用小数点而不是加号。


二、基础的PHP语法

1.先写个HelloWorld吧!

个人觉得其实与JavaScript的语言结构相似度很高: 先看看JS的HelloWorld:

//JS书写
  <script>
    let greeting = 'HelloWorld!';
      console.log('greeting');
  </script>

再看PHP的HelloWorld:

  <?php
    $greeting = 'HelloWorld';
      echo $greeting;
  ?>

可以了解到的是PHP是使用“echo”来输出的; 声明变量时有 在变量名前直接加“$” 即可声明的方法; PHP语言必须被包裹在“<?php”

2.PHP 的 for

  for($i = 0; $i < 10; $i++) {
    echo '<br> . 拼接字符串时,加号用小数点代替';
    echo '<br>';


## 3.PHP 的 数组 PHP中两种数组:
//这是一个具有三个数组元素,使用array函数生成的普通数组;
  $数组名 = array('ele1', 'ele2','ele3');
    echo $数组名[索引号];  //输出数组中某个元素;
    print_r($数组名);    //输出一整个数组;

//这是一个具有三个数组元素,使用array函数生成的索引数组;
  $数组名 = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
    echo $数组名['key名'];  //输出数组中某个key对应的value;
    print_r($数组名);    //输出一整个数组;

以上是两种常用的数组类型,再此基础上还可拓展出二维数组、三维数组、再向更高维度的数组用的比较少了。

数组遍历 从下面开始要涉及到“$ key 和 $ value”,这两个变量是为了好理解才命名为"key"和“value”的,数组内的key会经过$ key变量,而value会经过$ value变量,您尽可以把它们换成乱七八糟的名字,只要在那个位置有这么两个变量,循环就会知道该干什么。 JS中的循环遍历数组提取数组内容的方法在PHP中依然存在使用for循环,或者foreach来进行。 count()函数用在for遍历中,可以取到数组的长度。

  //for循环遍历数组,count($数组名)表示取到该数组的元素个数;
  for($i = 0; $i < count($数组名); $i++) {
    echo $数组名[$i];
  }  

foreach遍历:

  foreach ($数组名 as $value)  //方法一;
  foreach($数组名 as $key => $value)  //方法二;

第一种foreach方法遍历数组的原理: 在遍历进行至每个索引单元(数组元素)时,都将这个索引单元的value(即键对应的值)赋值给变量$ value,并且数组内部的指针向前移一步来进入下一个索引单元。 第二种foreach方法遍历数组的原理: 在遍历进行至每个索引单元(数组元素)时,都将这个索引单元的key(即键名)赋值给变量$ key(这样说很难理解,其实$ key完全可以改成“$i”,相当于for循环中的 i),并且数组内部的指针向前移一步来进入下一个索引单元。

两种方法实际上一个是利用键来遍历,一个利用值来遍历。 foreach输出索引数组的内容:

  foreach($数组名 as $value) {
    each $value."<br>";
  }
  //数组的各个key对应的值value会被输出;  


三、接收、发送提交数据

1.$_GET接收来自前端的数据

PHP文档中预定义的超全局变量$_GET用于收集使用get法提交的表单的数据。 详细如下: 在这里插入图片描述 (拿PS画的烂图) GET法提交数据的本质是在url之后拼接上数组的"?key=value",上面图里action属性进行的操作就是提供拼接的url有些时候表单的name属性是value的值。 url发送到服务器,指定的php文件开始接收数据:

欢迎 <?php echo $_GET["fname"]; ?>!<br>
你的年龄是 <?php echo $_GET["age"]; ?>  岁。

get法弊端1:就是拼接url在浏览器上部是可视的,这可能会造成隐私泄露,您的密码说不定会被放在现在的url里展览,安全性比较差劲。 get法弊端2:是数据如果太长,url会很长,可读性很差,部分浏览器会限定url的长度,服务器也会忽略太长的url;另外url太长测试起来也比较麻烦。

1.$_POST接收来自前端的数据

PHP文档中预定义的超全局变量$_POST用于收集使用post法提交的表单的数据,也可以接收文件。 提醒一下,您必须要在表单的method属性中指明您要使用post方法来提交数据,表单才会用post提交,默认是使用get法提交,并且用post提交时您必须为表单添加enctype属性,因为使用的是包含文件上传控件的表单,enctype的值必须为enctype=“multipart/form-data”。 步骤与 $ _GET法提交相似,区别似乎主要体现在对于URL的处理上,使用$ _POST接收的url十分简洁,直接拼接的是目标php文档的名字。

http://www.runoob.com/welcome.php

3.$_FILES接收POST法提交的文件

PHP文档中预定义的全局变量$_FILES包含了上传的文件的所有信息。 用于收集使用post法提交的文件。如果为单个文件上传,那么 $_FILES 为二维数组;如果为多个文件上传,那么 $_FILES 为三维数组 因为使用post提交,所以要确保文件上传表单的属性有enctype并且因为使用的是包含文件上传控件的表单,值应当是 enctype=“multipart/form-data”。 url传到服务器,用于接受文件的php文档接收文件: “print_r”是必须的,否则无法接收。

<?php
echo "<pre>";
print_r($_FILES);
?>

文件上传到服务器后会先存到一个临时目录下,这个临时目录会在PHP文档执行完毕后销毁,在销毁前被移出该目录的文件才会被存入服务器的盘内。 移出:

move_uploaded_file(文件名 , 移动至路径);

评论区

我是搬运工2号,没人自称1号

0

0

0

举报