php时间 cookie session 文件上传基础

avatar
作者
猴君
阅读量:0

时间和日期

PHP Date() 函数

格式//

date(format,timestamp)

format

Required. Specifies the format of the timestamp

timestamp

Optional. Specifies a timestamp. Default is the current date and time

  • d - 表示每月的某一天(01 到 31)
  • m - 代表一个月(01 到 12)
  • Y - 表示一年(四位数字)
  • l(小写字母 'L') - 表示星期几

echo “today is ”. date(“y-m-d”) . “<br>”;

php-版权年份

&copy; 2010-<?php echo date(“y”);?>

获取时间

H-24小时制的(00-23);

h-12小时制 ,带前导零(01-12);

i-带前导零的分钟(00-59);

s-带前导零的秒(00-59);

a-Ante meridiem(午前) Post meridiem(午后)(am pm

echo “this is ”. date(“h:i:sa”);

获取时区

默认定义

Date_default_timezone_set(Asia/Shanghai);

使用mktime创建日期

Date()用于创建时间戳,如果不创建默认可以使用系统格式

mktime(hour, minute, second, month, day, year)

$d=mktime(1114548122014);

echo "Created date is " . date("Y-m-d h:i:sa", $d);

时间的格式转化

strtotime(time, now)

$d=strtotime("10:30pm April 15 2014");
echo "Created date is " . date("Y-m-d h:i:sa", $d);

Strtotime()

将人类可读的函数转化为时间戳

$d=strtotime(“tomorrow”);

Echo date(“y-m-d h:i:sa”,$d)

$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

通过循环打印每个周末的日期

$startdate=strtotime(“Saturday”);

$enddate=strtotim(“+6 week”,$startdate);

While($startdate<enddate){
ehco date(“m-d” ,$startdate);

$startdate=strtotime(“+1 week” ,$startdate);

}

php包含文件

PHP include 和 require 语句

Require翻译为需要,意味着告诉编译器这个时关键的,运行时时是不可或缺的文件,所以当发生错误时,将会产生致命的错误

如果您希望执行继续进行并向用户显示输出,即使包含文件丢失时,请使用 include 

则,如果是 FrameWorkCMS 复杂的PHP应用程序编码,始终使用require语句将密钥文件包含在其中执行流程。这将有助于避免危及应用程序的安全性和完整性

Include表示包含这个文件,可有,也可以无,所以在发生错误时,仅仅是产生警告,程序照常运行,

1.<html>
<body>
<h1>Welcome to my home page!</h1>
<p>Some text.</p>
<p>Some more text.</p>
<?php include 'footer.php';?>
</body>
</html>

2. <html>
<body>

<div class="menu">
<?php include 'menu.php';?>
</div>

<h1>Welcome to my home page!</h1>
<p>Some text.</p>
<p>Some more text.</p>

</body>
</html>

创建,读取,上传,编辑文件的函数

  1. readfile()函数  //仅仅打开读取内容

(1.)创建一个date.txt的文本文件

(2.)将文件写入输出缓冲区

echo      readfile(“date.txt”);

2.fopen打开文件

$myfile=fopen(“date.txt”, “r”) or die(“unable to open file!”);

//打开这个文件

echo fread($myfile, filesize(“date.txt”)); 读取这个文件

fclose($myfile);  关闭文件占用服务器资源

filesize()函数

filesize()函数是一个在 PHP 中用于获取文件大小的函数。它接受一个文件名作为参数,并返回该文件的实际大小(以字节为单位)。如果指定的文件不存在,则filesize()返回false

Fread() 读取文件

第一个参数包含要从中读取的文件的名称和第二个参数指定要读取的最大字节数。fread()

以下 PHP 代码将“date.txt”文件读取到最后

echo fread($myfile, filesize(“date.txt”));

fclose关闭文件

在完成所有文件后关闭它们是一个很好的编程做法。你不希望一个打开的文件在你的服务器占用资源!

Fgets()读取单行

$myfile=fopen(“date.txt”,”r ”) or die(“ unable to open file!”);

Echo fgets($myfile);

输出//AJAX = Asynchronous JavaScript and XML

Fclose($myfile);

Feof()

该函数检查是否已达到文件结束EOF)。feof()

该函数对于遍历未知长度的数据非常有用。feof()

$myfile=fopen(“date.txt”)or die(“unable open file!”);

While(!feof($myfile)){

   Echo fget($myfile); //一行一行的遍历文本

}

Fgetc()读取单个字符

$myfile = fopen("webdictionary.txt""r"or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);// 读取单个字符直到文件结束

文件的创建以及写入

Fwrite()写入文件

第一个参数包含要写入的文件的名称和第二个参数是要写入的字符串。fwrite()

$myfile = fopen("newfile.txt""w"or die("Unable to open file!");
$txt = "John Doe\n";
fwrite($myfile, $txt);
$txt = "Jane Doe\n";
fwrite($myfile, $txt);
fclose($myfile);

覆盖

Newdate中包含了一些文件,当我们打开文件写入时,所有的文件都会被擦除
附加

您可以使用“a”模式将数据追加到文件中。“a”模式附加文本添加到文件末尾,而“W”模式将覆盖(并擦除)旧的文件的内容

文件上传

  1. 创建html表单

<form action=”upload.php ” method=”post ”enctype=”multipart/form-data ”>  将提交位置位于upload.php中,enctype 属性设为 "multipart/form-data" 这是为了告诉浏览器,这个表单包含不可分割的二进制数据,比如图片文件。这对于上传文件是必要的,因为文本编码方式无法正确地处理二进制数据。

Select image to upload:

<input type=”file ”name=”fileuptoload ”id=”filetoupload “>

<input type=”file ” name=”filetoupload ”id=”filetoupload ”>

<input type=”submit ”value=”upload image ” name=”submit ”>

</form>

//method 属性设为 "post" 表示我们通过POST方法发送表单数据。这通常用于在服务器上创建或更新资源,并且它可以包含大量数据而不受URL长度限制。

函数讲解

Multipart/form-data

multipart/form-data 是一种 MIME 类型,常用于在 HTTP 请求中传递表单数据和文件。这种方法特别适合处理包括文件上传在内的复杂表单提交过程。它允许在一个请求中同时发送多个不同类型的数据,如文本、JSON 或文件等。下面是一些关于 multipart/form-data 的关键特性及使用场景

数据分块

multipart/form-data 将数据分为多个部分(chunks),每一部分都有特定的内容类型和内容描述,使得浏览器和服务器能够区分不同类型的数据,例如文本、二进制文件或 JSON 对象

文件上传

文件上传是 multipart/form-data 最典型的应用之一。文件以单独的一行数据发送,其 Content-Disposition 部分包含 attachment 或 file 类型,以及文件名和其他元数据。

基本的php上脚本

$target_dir=”uploads/”;

$targrt_file=$target_dir .basename($_FILES[“filetoupload”][“name”]);

$upload=1; //通过basname函数获得文件的原始名称 files全局变量获得路径,通过basename函数解析路径下的最终文件名

$imagefiletype=strtlower(pathinfo($target_file,PATHINFO_EXTENSION));

//将文件名统一

If(isset($_POST[“submit])){ //判断是否有文件提交

$check=getimagesize($FILES_[“filetoupload “][“tmp_name”]);

If($check!==false){ //通过getimagesize函数返回文件的类型

       Echo “file is an image-”. $check[“mine”] . “.”;

       $uploadok=1;

}else{

Echo “file is not image.”;

              $uploadok=0;}

}

函数讲解

1 $_FILESb数组

$_FILES 是 PHP 中的一个超全局数组,用于获取上传文件的信息。当用户通过表单向服务器发送文件时,PHP 可以通过这个数组访问到有关文件上传的各种信息,包括但不限于文件名、临时文件路径、文件大小、MIME 类型等。

$_FILES = array(

    'field_name' => array(

        'name' => 'filename.ext',   //文件的原始名。以及拓展名

        'type' => 'mimetype',    //文件的MIME类型

        'size' => filesize_in_bytes, //文件的大小

        'tmp_name' => temp_file_path_on_server, 临时文件在服务器的放置

        'error' => error_code 错误码

    ),

);

Basename()

basename() 主要用于在给定的文件路径中提取出文件名。如果路径中包含目录部分,则仅保留最后的那个目录下的文件名;如果没有目录部分,即直接是一个文件名,那么将返回整个路径。

Pathinfo()

       pathinfo() 函数在PHP中用于分解一个文件路径,并将其分解成各个组成部分,例如目录、文件名、扩展名等。此函数返回一系列数组元素,每个元素代表路径的一部分。

isset() 函数

作用是用来检查给定的变量是否设置并且不是空(NULL 或者 “” 等)。当你想要在处理表单提交数据的时候检查某些特定变量是否存在时,通常会使用到 isset() 函数。

Getimages()

用于获取图像的大小以及其相关信息,在处理图像文件(如 JPEG、GIF、PNG 等)时,因为它能够返回图像的尺寸(宽度和高度)以及图像的类型(MIME 类型)。这对于在将图像文件显示到网页上之前,预先了解图像的尺寸和类型非常有帮助。

1,限制文件大小

  1. 限制文件类型
  2. $target_dir = "uploads/";
    $target_file = $target_dir . basename(
    $_FILES["fileToUpload"]["name"]);//通过basename函数剥去文件的路径,得到最终的原始文件名
    $uploadOk = 1;
    $imageFileType= strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); //
    统一文件名

    // 检查这个图像是实际图像还是虚假图像
    if(isset($_POST["submit"])) {
      $check = getimagesize(
    $_FILES["fileToUpload"]["tmp_name"]);//检查文件大小

//得到这个文件的后缀
  if($check !== false) {
    
echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 
1;
  } 
else {
    
echo "File is not an image.";
    $uploadOk = 
0;
  }
}


// 检查是否存在
if (file_exists($target_file)) {
  
echo "Sorry, file already exists.";
  $uploadOk = 
0;
}


// 检查文件的大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  
echo "Sorry, your file is too large.";
  $uploadOk = 
0;
}


// 允许创建的文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 
0;
}


// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
else {
  
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {//将文件放入临时文件名检查,是否仅为一个空名字
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } 
else {
    
echo "Sorry, there was an error uploading your file.";
  }
}

?>

在php上传代码的搭建过程中,首先是思路

1.获取image的初始名称   //basename()函数 解析路径,获得文件的初始名

2.将image文件初始名统一 //通过pathinfo($target_filr,PATHINFO_EXTENSION))得到后缀名并小写话,pathinfo用于分解目标文件,后缀名,文件名等,作为参数$target_file

3..检查图片是否为真实文件,

4.防止跨脚本攻击,将文件名中的html特殊字符进行转译,确保文本的完整性,防止意外改变html的标签属性

总结

Phpcookie

Cookie通常用于网站的会话管理、用户偏好设置和个人化体验。以下是Cookie的一些常见应用场景:

  1. 会话保持:服务器通过Cookie存储用户的唯一标识符,当用户在网站上浏览不同页面时,可以识别并保持登录状态。
  2. 购物车功能:网站可以在用户添加商品到购物车时,通过Cookie保存所选商品信息,直到用户完成购买操作。
  3. 个性化设置:如语言选择、主题切换,用户的选择会被存储在Cookie中,下次访问时自动应用。
  4. 广告追踪:某些网站使用Cookie记录用户的行为数据,以便提供更精准的定向广告。
  5. 网站统计:网站运营者利用Cookie收集匿名用户数据,分析网站流量和用户行为。
  6. 跨域资源共享(Cross-Origin Resource Sharing, CORS):在一些特定场景下,Cookie允许跨域通信,用于服务端验证身份等。

然而,随着隐私法规的加强,特别是对于跟踪Cookie的限制,现代浏览器越来越倾向于限制或清除它们,以保护用户隐私。

1.查找cookie值

$cookie_name=’user ’;

$cookie_value=’hello world’;

Setcookie($cookie_name,$cookie_value,time()+(86400*30),”/”)//86400为一天

?>

<?php

If(!isset($_COOKIE[$cookie_name])){

       Echo “cookie:’” .$cookie_name. “ ’is not set”;

       }else{

Echo “cookie ‘ ”.$cookie_name. “ ’is set <br>”;

?>

Php session_start()

“记忆储物柜”当你在持续的web购物时,你不希望你每到一个页面就需要重新输入账号密码,这是因为http只负责建立连接,不负责维护状态,so 服务器会为你创建一个唯一id(通行证吧),在你这次截止到未关闭浏览器前,你都可以畅通无阻的浏览你喜欢的商品,这个id会被发送到cookie中,总之,session维护了你的基本信息,储存在cookie里,在你的为退出或者清除浏览器缓存前,帮你随时维持你的个人信息,在http服务中

启动session服务  全局变量 session_start()

建立一个session来源脚本

<?php

Session_start();

?>

< <!DOCTYPE html>
<html>
<body>

<?php

$_SESSION[“myfrends”]=”php”;

$_SESSION[“color”]=”blue”;

Echo “session are set”;

?>

</body>

</html>

让我们来到另一个脚本,查看全局session

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["myfrends"] . ".<br>";
echo "Favorite animal is " . $_SESSION["color"] . ".";
?>

</body>

</html>

Session_start()//设置全局变量 session——unset()//清空会话变量

Session_destory()//销毁所有会话

当然你很好奇session是如何跨脚本的呢,当我们写入的session之后,session会话数据会被保存到服务器(或是本地)(或是云端),除非手动删除或者关闭,否则会一直存在

session_register('username') ;

session_write_close();

若省略,默认也是保存, 后续的页面请求中,只要再次调用session_start(),就能获取和更新之前设置过的Session变量,因为它们是由服务器管理的,不受脚本执行顺序的影响

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!