php

  • 字符串变量中的单、双引号
    双引号串中的内容可以被解释而且替换 如变量 $var 转义字符\n
    而单引号串中的内容总被认为是普通字符
    如果双引号里有字符串变量,变量会被解析,但还要再给这个被解析的变量加上单引号
<?php
 echo "
      <script src='test8.js' type='text/javascript' ></script>
      <script>
       append_img('$filepath');//不加单引号会报错
        </script>
        ";
\?>

可以在变量外加{},变量名带字符串,不加会报错

  echo('<a href="edit.php?user_id='{$row['user_id']}'">Edit</a> / ');
  • 网页中\n 没用,要用 <br>
  • . string operator concatenation + numeric operator
  • 自动做类型转换
  • == with type conversion
  • === !=== without type conversion
  • array(…) array(“key”=>value,…)
  • 加入新元素
$arr=array();
$arr[]=1;
 $arr[]=2;
$arr2=array("apple"=>array(....),"peal"=>array(.....))//嵌套
  • 输出 print echo 输出更具体 print_r 输出更更具体 var_dump
  • 循环
foreach($arr as $k => $v)
     echo "key:", $k , "value:", $v
  
foreach($i=0;i<count($arr);i++)
     echo "key:", $arr[i] 
//key是否存在
array_key_exits("..",$arr);
isset($arr[".."])
$name=$za["name"]??"not found";
等同于 $name=isset(za["name"])?$za["name"]:"not found";
  • explode(“分隔符”,$str)
  • <?php echo(...);?> 等于 <?=...?> 用于html 里内嵌php
  • html内嵌php,php里又内嵌html
<html>
<head></head><body><table border="1">
<?php
foreach ( $rows as $row ) {//循环要用php
    echo "<tr><td>";//表格又要用html
    echo($row['name']);
    echo("</td><td>");
    echo($row['email']);
    echo("</td><td>");
    echo($row['password']);
    echo("</td></tr>\n");
    echo('<form method="post"><input type="hidden" ');//提交表单也要用html
    echo('name="user_id" value="'.$row['user_id'].'">'."\n");
    echo('<input type="submit" value="Del" name="delete">');
    echo("\n</form>\n");
    echo("</td></tr>\n");
}
?>
</table>
<p>Add A New User</p>
<form method="post">
<p>Name:
<input type="text" name="name" size="40"></p>
<p>Email:
<input type="text" name="email"></p>
<p>Password:
<input type="password" name="password"></p>
<p><input type="submit" value="Add New"/></p>
</form>
</body>

- input type hidden
```php 
<input type="hidden" name="field_name" value="value">

1隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。
2有些时候我们要给用户一信息,让他在提交表单时提交上来以确定用户身份,如sessionkey,等等.当然这些东西也能用cookie实现,但使用隐藏域就简单的多了.而且不会有浏览器不支持,用户禁用cookie的烦恼。
3有些时候一个form里有多个提交按钮,怎样使程序能够分清楚到底用户是按那一个按钮提交上来的呢?我们就可以写一个隐藏域,然后在每一个按钮处加上"document.form.command.value=“xx”"然后我们接到数据后先检查command的值就会知道用户是按的那个按钮提交上来的。
4有时候一个网页中有多个form,我们知道多个form是不能同时提交的,但有时这些form确实相互作用,我们就可以在form中添加隐藏域来使它们联系起来。

 #1 在 $_SESSION 中注册变量。

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>
 #2 从 $_SESSION 中反注册变量。

<?php
session_start();
unset($_SESSION['count']);
?>
  • session是存储在服务器端server,cookie是存储在客户端browser。
    Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
1当一个Session开始时,Servlet容器会创建一个HttpSession对象,那么在HttpSession对象中,可以存放用户状态的信息。
2Servlet容器为HttpSession对象分配一个唯一标识符即Sessionid,Servlet容器把Sessionid作为一种Cookie保存在客户端的 浏览器 中。
3用户每次发出Http请求时,Servlet容器会从HttpServletRequest对象中取出Sessionid,然后根据这个Sessionid找到相应的HttpSession对象,从而获取用户的状态信息
当我们关闭浏览器后,就访问不到之前的session。
其实之前的Session一直都在服务器端,而当我们关闭浏览器时,此时的Cookie是存在于浏览器的进程中的(称为会话Cookie),当浏览器关闭时,Cookie也就不存在了。
当我们重新打开浏览器窗口时,之前的Cookie中存放的Sessionid已经不存在了,此时服务器会再发送一个新的存有Sessionid的Cookie到客户端的浏览器中,此时对应的是一个新的会话,而服务器上原先的session等到它的默认时间到之后,便会自动销毁。

当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session;当不在同一个窗口中打开相同的浏览器时,发送请求,仍是同一个session;当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,就是本文所阐述的,是不同的session,但是它和session的生命周期是没有关系的.

  • isset($_POST["…"])只是检查有没有提交。还需要检查strlen,不然可能提交的是空的。isset并不检查提交内容是否为空
  • htmlentities() 防止html injection
    array_map(“htmlentities”, $_POST); 所有post的数据都施加了 htmlentities
  • 数组
    在用字符串表示的数组索引上加上引号。$foo[‘bar’]
    用不着给索引为常量或变量的加上引号 a r r a y [ array[ array[i]
    双引号里面的数组索引无法被识别,要用字符串拼接符号
 header("Location: add.php?user_id=".$_GET["user_id"]);
 错误  header("Location: add.php?user_id=$_GET["user_id"]");
  • php 结尾不一定要加 ?>
    加结尾的:之后的内容视为 纯文本直接输出,直到再次碰到 <? 或 <?php
    不加的:之后的内容视为 PHP 代码,除非没有代码了。
    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。这些影响最多的时候应该是在使用 include 和 require的时候,加了结束标签 如果又在后面加了空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。
  • header() 函数向客户端发送原始的 HTTP 报头。
 header("Location: add.php?user_id=".$_GET["user_id"]);//重定向
 header("content:application/json;chartset=uft-8");//告诉浏览器它收到的文件类型是JOSN,不设置默认是html

要返回json数据,我们先把header设置为json类型: Content-type: application/json,然后 把返回的数据通过json_encode方法转成json字符串

  • 上传的文件会保存在数组 $_FILES
    第一个参数是表单的 input name,第二个下标可以是 “name”, “type”, “size”, “tmp_name” 或 “error”。
  • 有多个submit,可用php里 $_REQUEST里的值 区分。也可以调用不同javascript函数
 if (isset($_REQUEST['save'] )) {
  	...
        } 
 elseif (isset($_REQUEST['cancel'] ) ) {
           .....
        }
  • php在函数外用return会导致终止整个脚本,不显示html页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值