欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > php时间 cookie session 文件上传基础

php时间 cookie session 文件上传基础

2024/11/30 6:57:20 来源:https://blog.csdn.net/cppstdio/article/details/140835789  浏览:    关键词:php时间 cookie session 文件上传基础

时间和日期

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变量,因为它们是由服务器管理的,不受脚本执行顺序的影响

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com