(九)php参考手册---http函数&表单与验证&会话处理

来源:互联网 发布:网络上的白云先生是谁 编辑:程序博客网 时间:2024/06/05 03:52

header()函数

  • header(string,replace) 向客户端发送原始的 HTTP 报头。
    参数:string 必需。规定要发送的报头字符串。
    replace 可选。指示该报头是否替换之前的报头,或添加第二个报头。默认是 true(替换)。false(允许相同类型的多个报头)。
<?php    header('Location:Demo2.php');    // 自动跳转到想要的页面    header('Location:http://www.baidu.com');    // 自动跳转到百度?>

注意:如果出现警告:Cannot modeify header information-headers already sent by(—)in —。
解决办法一:在执行header()函数之前不能有任何浏览器输出
解决办法二:开启缓冲 ob_start() (不建议使用)
http_response_code 可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)
headers_list() 返回已发送的(或待发送的)响应头部的一个列表。
headers_sent() 检查 HTTP 报头是否发送/已发送到何处。
setcookie() 定义与 HTTP 报头的其余部分一共发送的 cookie。
setrawcookie() 定义与 HTTP 报头的其余部分一共发送的 cookie(不进行 URL 编码)。

<?php    header('Content-Type:text/html;charset=utf-8');    echo '我是中文';?>

接受及验证数据

超级全局变量

  • $_POST接收post提交的数据
  • $_GET 接收get提交的数据

验证数据

  • isset($_POST(’name’)) 判断一个变量是否存在
  • empty()判断是否为空
<?php    //过滤非表单提交    if(isset($_POST['name'])){        echo '正常提交';    }else{        echo '非正常提交';    }    //判断提交是否为空(不推荐这种方法)    if(!empty($_POST['name'])){        echo '为空';    }else{        echo '不为空';    }?>
  • htmlspecialchars($username):将html特殊字符进行过滤。
<?php    if(isset($_GET['name'])){        echo '正常提交';        $username=$_GET['name'];        // 在输出之前,为了页面安全性        $username=htmlspecialchars($username);    }else{        echo '非正常提交';    }?>

有效性验证

  • trim()去除数据的前后空格
  • strlen()判断数据的长度
  • is_numeric()判断数据是否是纯数字
  • 使用正则表达式验证邮箱是否合法

  • tips:exit;(直接退出)
    die;(不会继续执行)

验证 Name、E-mail、以及 URL

<?php// 定义变量并设置为空值$nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {  if (empty($_POST["name"])) {    $nameErr = "Name is required";  } else {    $name = test_input($_POST["name"]);    // 检查名字是否包含字母和空格    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {      $nameErr = "Only letters and white space allowed";     }  }  if (empty($_POST["email"])) {    $emailErr = "Email is required";  } else {    $email = test_input($_POST["email"]);    // 检查电邮地址语法是否有效    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {      $emailErr = "Invalid email format";     }  }  if (empty($_POST["website"])) {    $website = "";  } else {    $website = test_input($_POST["website"]);    // 检查 URL 地址语言是否有效(此正则表达式同样允许 URL 中的下划线)    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%    =~_|]/i",$website)) {      $websiteErr = "Invalid URL";     }  }  if (empty($_POST["comment"])) {    $comment = "";  } else {    $comment = test_input($_POST["comment"]);  }  if (empty($_POST["gender"])) {    $genderErr = "Gender is required";  } else {    $gender = test_input($_POST["gender"]);  }}?>

其他http函数

  • headers_list() 函数返回已发送的(或待发送的)响应头部的一个列表。
    该函数返回包含报头的数组。

  • headers_sent(file,line):函数检查 HTTP 标头是否已被发送以及在哪里被发送。
    如果报头已发送,则返回 true,否则返回 false。
    参数:file,line 可选。如果设置 file 和 line 参数,headers_sent() 会把输出开始的 PHP 源文件名和行号存入 file 和 line 变量中。

会话处理

会话结束时,当浏览器关闭时,cookie就没有了。
如果创建的是一个包含过期时间的cookie,过期时间采用当前的时间戳+秒即可

time()+(7*24*60*60)  //表示未来7
  • setcookie(name,value,expire,path,domain,secure):函数向客户端发送一个 HTTP cookie。
    参数:
    name 必需。规定 cookie 的名称。
    value 必需。规定 cookie 的值。
    expire 可选。规定 cookie 的有效期。
    path 可选。规定 cookie 的服务器路径。
    domain 可选。规定 cookie 的域名。
    secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
    注释:可以通过 HTTPCOOKIEVARS["user"]_COOKIE[“user”] 来访问名为 “user” 的 cookie 的值。

  • setrawcookie() 与 setcookie() 几乎完全相同,不同的是不会在发往客户机时,对 cookie 值进行自动 URL 编码。
    注释:setrawcookie() 与 setcookie() 几乎完全相同,不同的是不会在发往客户机时,对 cookie 值进行自动 URL 编码。

  • 删除cookie需要把原来的name的值替换成空。或者将过期时间调整到比目前的时间还早一秒。

注意:cookie并不是及时生成的,会慢一拍。第一次刷新只是覆盖了原来,但获取的还是之前的,需要第二次刷新,才能真正获取到。

  • cookie的限制:1:必须在HTML文件的内容输出之前设置
    2:不同浏览器对cookie的处理不一致,且有时会出现错误结果
    3:限制是在客户端的,一个浏览器能创建最多30个,并且不能超过4kb,
    每个站点能设置最多20个。

session

只要用到session,就必需开启session_start();session是存在服务器端的,一般存放1440秒,
如果网页没有任何操作,会自动销毁,当然通过php.ini去修改保存时间
如果关闭了浏览器,也会自动销毁,并且没有延迟性

  • 创建session,直接采用超级全局变量赋值即可
//赋值$_SESSION['name']='123';//取值echo $_SESSION['name'];//删除unset($_SESSION['name']);echo $_SESSION['name'];//销毁所有sessionsession_destroy();

总结

cookie适用于会员登录,购物车等等,因为不占用服务器资源,所以会员特别多的,就用cookie
session一般用于后台管理登录,人少,安全性高,一段时间不操作会自动过期。

原创粉丝点击