PHP Cookies

 更新时间:2016年11月25日 15:15  点击:1877

PHP Cookies

Cookie是经常被用来识别用户。

cookie是什么?
Cookie是经常被用来识别用户。 Cookie是一个小型的档案服务器嵌入在用户的计算机上。每次在同一台计算机请求一个网页的浏览器,它将把饼干太多。在PHP中,你都可以创造和检索的cookie值。

如何创建一个Cookie ?
该setcookie ( )函数功能是用于设置一个cookie 。

注: setcookie ( )函数函数必须出庭<html>标记。

语法

setcookie(name, value, expire, path, domain);

范例1
在下面的例子中,我们将创建一个Cookie命名为“用户” ,并指派的价值“阿莱克斯波特”给它。我们还规定,饼干应到期后一小时:

 

<?php 
setcookie("user", "Alex Porter", time()+3600);
?>
注:价值Cookie是URLencoded时自动发送的cookie ,并自动解码收到时(以防止URLencoding ,使用setrawcookie ( )代替) 。

Example 2
您也可以设定到期时间的cookie以另一种方式。它可容易使用秒。
 
<?php
$expire=time()+60*60*24*30;
setcookie("user", "Alex Porter", $expire);
?>

在上述范例中的到期时间设定为一个月( 60秒* 60分钟* 24小时* 30天) 。




如何撷取一个cookie价值吗?
PHP的$ _COOKIE变量是用来撷取一个cookie值。

在下面的例子中,我们撷取的价值Cookie的名为“用户” ,并显示在网页上:

<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
print_r($_COOKIE);
?>
 

在下面的例子中我们使用isset ( )函数找出一个Cookie ,如果已经成立:

 

<html>
<body>
<?php
if (isset($_COOKIE["user"]))
  echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
  echo "Welcome guest!<br />";
?>
</body>
</html>
 

如何删除的Cookie ?
当删除了cookie你应该保证到期日期是在过去。

删除例如:

 

<?php 
// set the expiration date to one hour ago
setcookie("user", "", time()-3600); ?>
 

如果浏览器不支持cookies ?
如果您的申请涉及的浏览器不支持cookies ,您将不得不使用其他方法来传递信息从一个网页到另一个在您的申请。一种方法是通过数据形式(形式和用户输入的是前面描述本教程) 。

下面的表格通过用户输入的“ welcome.php ”当用户点击“提交”按钮:

 

<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
 

取回的价值在“ welcome.php ”文件像这样:

<html>
<body>Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old.</body>
</html>

了一个PHP会话变量是用来储存的信息,或更改设置的一个用户会议。量举行有关单一用户,并提供给所有的网页在一个应用程序。

PHP的会话变量
当你正与一个应用程序,你打开它,做一些改变,然后将其关闭。这是很像会议。计算机知道你是谁。它知道当您启动应用程序,当您结束。但是,在互联网上有一个问题: Web服务器并不知道你是谁和你怎么做,因为HTTP地址不保持状态。

了一个PHP会议解决了这个问题,让您存储的用户信息在服务器上以供日后使用(即用户名,购物项目等) 。然而,会议的信息是暂时的,将被删除后,用户已经离开了网站。如果您需要永久储存您可能会想要储存数据在数据库中。

会议的工作创造一个独特的识别码(的UID )为每个访问者和存储变量在此基础上的UID 。独特标识或者保存在一个cookie或宣传中的网址。

从一个PHP会议
在您可以存储用户的资料,你的PHP会议上,您必须先启动了会议。

注: session_start ( )函数必须出庭<html>标记:

<?php session_start(); ?>
<html>
<body>
</body>
</html>

以上代码将注册用户的会议服务器,让您开始保存用户信息,并指派一名的UID为用户的会议。




存储会话变量
正确的方法存储和检索会话变量是使用PHP的$ _SESSION变量:

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
输出
pageviews=1
 

在下面的例子中,我们创建一个简单的网页意见柜台。该isset ( )函数检查,

如果“意见”变数已设定。如果“意见”已经成立,我们可以增加我们的柜台。如果“意见”并不存在,

我们建立了一个“意见”变量,并将其设置为1 :

 

<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

摧毁了会议
如果你想删除一些会议资料,您可以使用字母( )或session_destroy ( )函数。

该取消( )函数是用来释放指定的会话变量:

 

<?php
unset($_SESSION['views']); ?>
 

您也可以完全摧毁了会议通过调用session_destroy ( )函数:

<?php
session_destroy(); ?>
注: session_destroy ( )将重设您的会议,你将失去所有的存储会话数据。

PHP文件上传 move_uploaded_file

建立一个上传文件表格
为了让用户上传文件的形式可以是非常有益的。

看看下面的HTML表单的文件上传:

<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

请注意以下的HTML表单上面:

该是enctype属性<form>标记指定的内容类型时使用的形式提交。 “多/形式的数据”时使用的一种形式,需要二进制数据,如文件内容,将上传
该类型= “文件”属性指定<input>标记的投入应该是处理文件。例如,当观看在浏览器中,将有浏览按钮,旁边的输入栏位
注:允许用户上传文件是一个很大的安全风险。只允许受信任的用户进行文件上传。





创建上传脚本
该“ upload_file.php ”文件中包含的代码上传文件:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

利用全球的PHP变量$ _FILES阵列,您可以上传文件从用户端电脑到远程服务器。

第一个参数是表单的输入名称和第二指数可以是“姓名” , “类型” , “大小” , “ tmp_name ”或“错误” 。像这样:

变量$ _FILES [ “file” ] [ “name” ] -的名字上传的文件
变量$ _FILES [ “file” ] [ “type” ] -类型的上传文件
变量$ _FILES [ “file” ] [ “size” ] -大小以字节为单位的上传文件
变量$ _FILES [ “file” ] [ “ tmp_name ” ] -名称的临时副本的文件存储在服务器上
变量$ _FILES [ “file” ] [ “error” ] -错误代码造成的文件上传
这是一个非常简单的方式上传文件。出于安全原因,你应该补充什么限制,用户可以上传。


限制上传
在此脚本,我们添加一些限制文件上传。用户只能上传。 gif或。 JPEG文件和文件大小必须在20 kB的:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?>
 

注意:对于IE浏览器承认jpg文件类型必须pjpeg ,用于Firefox必须的jpeg 。




节能上传文件
上述范例建立一个临时副本上传的文件在PHP临时文件夹在服务器上。

临时复制的文件消失了的剧本时结束。存储上传的文件,我们需要将它复制到不同的位置:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
以上脚本检查,如果文件已经存在,如果它不,它的文件拷贝到指定文件夹。

注意:这个例子保存文件到一个新的文件夹中所谓的“上传”

fopen()是用来打开文件,在PHP 。

第一个参数的这一功能包含文件的名称将开放第二个参数指定的文件模式应打开:

 <html>
<body><?php
$file=fopen("welcome.txt","r");
?></body>
</html>

The file may be opened in one of the following modes:

Modes Description
r Read only. Starts at the beginning of the file
r+ Read/Write. Starts at the beginning of the file
w Write only. Opens and clears the contents of file; or creates a new file if it doesn't exist
w+ Read/Write. Opens and clears the contents of file; or creates a new file if it doesn't exist
a Append. Opens and writes to the end of the file or creates a new file if it doesn't exist
a+ Read/Append. Preserves file content by writing to the end of the file
x Write only. Creates a new file. Returns FALSE and an error if file already exists
x+ Read/Write. Creates a new file. Returns FALSE and an error if file already exists

注意:如果fopen()函数是无法打开指定的文件,它返回0 (假) 。

例如
下面的例子生成一个讯息,如果fopen()函数是无法打开指定的文件:

<html>
<body>
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
?>
</body>
</html>

fclose 关闭文件
该fclose ( )函数是用来关闭一个开放的档案

<?php
$file = fopen("test.txt","r");
//some code to be executed
fclose($file);
?>
检查文件结束
该feof ( )函数检查如果“文件结束” (的EOF )已经达成。

该feof ( )函数是有益的循环,通过数据的未知的长度。

注意:您不能读取档案开放瓦特,一个,和x模式
if (feof($file)) echo "End of file";
 

读文件一行行
该fgets ( )函数是用来读取一个单一的从一个文件。

注意:在调用此函数的文件指针已经移到下一行。

例如
下面的例子中读取文件一行行,直至到达文件:

<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
  {
  echo fgets($file). "<br />";
  }
fclose($file);
?>

读文件的性格特征
该fgetc ( )函数是用来读取一个字符从一个档案。

注意:在调用此函数的文件指针移动到下一个字符。

例如
下面的例子中读取一个文件性质的特点,到年底达成的文件是:

 

<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!feof($file)) 
  { 
  echo fgetc($file); 
  }
fclose($file);
?>

PHP Include 文件

服务器端包括
您可以插入的内容的文件到PHP文件之前,服务器执行它,与包括( )或要求( )函数。这两项职能是相同的各种方式,但他们如何处理错误。在包括( )函数生成一个警告(但该脚本将继续执行) ,而需要( )函数生成一个致命的错误(和脚本执行后,将停止错误) 。

这两项职能是用于创建功能,页眉,页脚,或内容,可重复使用的多个页面。

这可以节省开发了相当多的时间。这意味着,您可以创建一个标准的标题或菜单文件,您想您的所有网页,包括。当头需要更新,您只能更新一个包括文件,或当你添加了新的一页到您的网站,您可以改变菜单文件(而不是更新的所有链接的网页) 。

在包括( )函数
在包括( )函数中的所有文本指定的文件并复制到文件,包括使用功能。

范例1
假设您有一个标准的头文件,所谓的“ header.php ” 。包括头文件在一个页面上,使用包括( )函数,就像这样:

<html>
<body><?php include("header.php"); ?><h1>Welcome to my home page</h1><p>Some text</p></body>
</html>

示例2
现在,让我们假设我们有一个标准的菜单文件,应当使用的所有网页(包括文件通常有。 “ PHP的”扩展) 。看看“ menu.php ”文件如下:

<html>
<body><a href="http://www.w3schools.com/default.php">Home</a> |
<a href="http://www.w3schools.com/about.php">About Us</a> |
<a href="http://www.w3schools.com/contact.php">Contact Us</a>

这三个文件, “ default.php ” , “ about.php ”和“ contact.php ”大家都应该包括“ menu.php ”文件。以下是代码“ default.php ” :

<?php include("menu.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>

如果你看看源代码的“ default.php ”在浏览器中,它将看起来就像这样:

<html>
<body>
<a href="default.php">Home</a> |
<a href="about.php">About Us</a> | 
<a href="contact.php">Contact Us</a>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>

当然,我们也必须做同样的事情为“ about.php ”和“ contact.php ” 。通过使用包括文件,

您只需更新中的文字“ menu.php ”文件如果您决定重新命名或更改顺序的联系或添加其他网页的网站。

The require()

The require() 函数生成一个警告(但该脚本将继续执行) ,而需要( )函数生成一个致命的错误(和脚本执行后,将停止错误) 。

如果您加入了文件,包括( )函数和发生错误时,你可能得到一个错误信息类似下面的一个。

PHP代码:

<html>
<body>

<?php
include("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

 

error

Warning: include(wrongFile.php) [function.include]:
failed to open stream:
No such file or directory in C:homewebsitetest.php on line 5
Warning: include() [function.include]:
Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:php5pear')
in C:homewebsitetest.php on line 5
Hello World!
 

请注意,声明的回音仍是执行!这是因为报警不停止执行脚本。

现在,让我们运行相同的例子与要求( )函数。

PHP代码:

 

 <html>
<body>

<?php
require("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:homewebsitetest.php on line 5
Fatal error: require() [function.require]:
Failed opening required 'wrongFile.php'
(include_path='.;C:php5pear')
in C:homewebsitetest.php on line 5
 
回声说法是不执行的,因为脚本执行停止后致命错误。

这是推荐使用的需要( )函数而不是包括( ) ,因为脚本不应该继续执行,如果文件丢失或命名错误。
[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法。分享给大家供大家参考,具体如下:这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第一次打开网页的时候才显示,第二次自动隐藏起...2015-11-08
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • vue项目中js-cookie的使用存储token操作

    这篇文章主要介绍了vue项目中js-cookie的使用存储token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-14
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 什么是cookie?js手动创建和存储cookie

    什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31
  • 如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标

    从IE 10开始,type=”text” 的 input 在用户输入内容后,会自动产生一个小叉叉(X),方便用户点击清除已经输入的文本,下面通过本文给大家介绍下如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标...2017-01-09
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • python爬虫用request库处理cookie的实例讲解

    在本篇内容里小编给大家整理的是一篇关于python爬虫用request库处理cookie的实例讲解内容,有需要的朋友们可以学习参考下。...2021-02-21
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11