如果您刚刚开始 PHP 开发之旅, 您很可能在 URL 中使用完整的文件名来导航 应用程序,例如 server/contact.php。不用担心,我们都是这样开始的,这就是我们学习的方式。
今天,我想帮助您改进浏览文件的方式 应用。我们将讨论路由,因为它在任何情况下都至关重要 现代应用。它将帮助你在你的事业上更进一步 专业的PHP开发。
路由系统简单地映射一个HTTP 向请求处理程序(函数或方法)发出请求。换句话说,它 定义了我们如何导航或访问应用程序的不同部分,而无需 需要输入文件名。您可以通过创建或设置来做到这一点 路线(或路径)。例如,路由服务器/联系人允许我们访问 contact.php 文件。
路由如何工作
首先,让我回忆一下什么路由是。路由 允许我们以更好的方式构建我们的应用程序并摆脱混乱 网址。这是任何优秀路由系统都提供的两个主要功能:
- 定义为每个传入请求运行哪个操作。
- 生成 SEO 友好的 URL(例如 /views/users 而不是views/user.php?all).
要做一个路由系统,我们需要一个路由器,这是没有的超过 我们的应用程序的入口文件。默认情况下,该入口文件名为index.php。在文件内部,我们通过 [switch](https://www.php.net/manual/en/control-structs.switch.php) 或 [match](https://www.php) 定义了路由系统。 net/manual/en/control-structs.match.php) 语句。
最后但并非最不重要的一点是,我们必须将所有请求重定向到路由器。这是在 PHP 服务器的配置文件中完成的。
项目设置
在继续之前,让我们看看项目会是什么样子:
文件结构
使用下面的 shell 命令来启动项目:
mkdir php-routing & cd php-routingtouch index.php .htaccess
- .htaccess:目录级 Apache 配置文件。如果使用 NGINX 服务器则不需要它。
- index.php:这是项目的路由器和入口文件。所有传入请求都将重定向到此处。
- views:此文件夹包含项目的所有 UI。
如何将所有 HTTP 请求重定向到路由器
前面我们说过重定向是在 PHP 服务器中完成的 配置文件。因此,您需要根据您的情况进行一些调整 使用 Apache 或 NGINX 服务器。
使用 Apache 重定向
在这里,我们可以轻松使用我们已经在项目根目录中创建的 .htaccess 文件。添加以下指令:
mkdir php-routing & cd php-routingtouch index.php .htaccess
- 第 1 行:我们激活 Apache 服务器的运行时重写引擎。
- 第 2 行:我们限制对物理文件的访问。
- 第3行:我们将所有即将到来的请求重定向到index.php。
注意:如果站点或应用程序位于服务器的根目录(或者如果我们没有虚拟主机),则 .htaccess 应该如下所示:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
在上面的代码中,替换/folder/ 包含您站点的文件夹的名称。
使用 NGINX 重定向
默认配置文件是 name nginx.conf。该文件可以在 etc/nginx、usr/local/nginx/conf 或 /usr/local/etc/nginx 中找到。
要重定向到index.php,请使用以下命令:
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
位置 / 块指定这是所有位置的匹配,除非明确指定位置 /
try_files 指令告诉服务器,对于与该位置中的块匹配的 URI 的任何请求,首先尝试 $uri(或 $uri/),如果文件存在,则提供该文件。否则,将使用后备选项 (index.php)。最后的行为就是我们想要的。
修改后重新加载服务器。
如何创建路由系统
我们现在知道路由是如何工作的,并且我们正在甚至发送所有请求 到路由器。现在是时候在index.php中编写路由器的代码了。
首先,创建一个变量来保存HTTP请求字符串:
location / { try_files $uri $uri/ /index.php}
这个变量将帮助我们进行比较有很多路线(路径)并调用相应的视图接口。
$request = $_SERVER['REQUEST_URI'];
这里发生了什么? switch 语句类似于同一表达式(变量)上的一系列 if 语句。仅当找到其表达式计算结果与 switch 表达式的值匹配的 case 语句时,它才执行代码。让我来说明一下,以便您能够很好地理解它。
让我们假设我们的变量保存值 /views/users/。当上面的代码运行时,PHP 将检查值 /views/users 是否等于 case 语句的值,在我们的例子中是 /views/users。因此,此条件将评估为 true,PHP 将调用文件 /views/users.php。如果条件计算结果为 false,PHP 将检查下一个 case 语句,直到 switch 块结束。
注意:每次 case 语句计算结果为 true,PHP 将继续执行以下 case 中的代码陈述而无需评估这些案例陈述。在我们的例子中,PHP 还需要views/dep.php。为了避免这种“不良行为”,您必须在每个 case 语句后添加 break 语句。
现在将所有内容放入我们的 index.php 文件中:
mkdir php-routing & cd php-routingtouch index.php .htaccess
如您所知,我们首先将用户请求存储在 $request 变量中,然后在 switch 语句中使用它。为了代码简洁,我创建了一个变量来保存视图目录名称。
您还会注意到另外两件事:
- “”和“/”当用户位于应用程序或网站的根目录时,用于匹配 site.com 以及 site.com/。
- 有一个特殊的 case 语句,默认,匹配任何与其他情况不匹配的内容,即当路线未知时。
现在让我们在视图中添加一些虚拟数据。
在Views 文件
我们已经在views 目录中创建了所有文件。让我们移动到这个目录并在每个文件中添加一些内容。
只需在每个文件中添加一些内容:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
location / { try_files $uri $uri/ /index.php}
$request = $_SERVER['REQUEST_URI'];
如您所见,每个文件只包含一个标题和一个段落。随意添加您喜欢的任何内容并测试路由器。
最终想法
在本教程中,您学习了如何从头开始创建基本的路由系统,包括:
- 如何在项目根目录创建一个名为index.php的文件。这是您的应用程序的路由器。
- 如何将所有传入请求重定向到路由器。您可以在服务器的配置文件中执行此操作。
- 如何在路由器中使用 switch 语句创建路由系统。
以上是如何从头开始为 PHP 应用程序构建路由系统的详细内容。更多信息请关注PHP中文网其他相关文章!

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

phpoffersvarioussessionsionsavehandlers:1)文件:默认,简单的ButMayBottLeneckonHigh-trafficsites.2)Memcached:高性能,Idealforsforspeed-Criticalapplications.3)REDIS:redis:similartomemememememcached,withddeddeddedpassistence.4)withddeddedpassistence.4)databases:gelifforcontrati forforcontrati,有用

PHP中的session是用于在服务器端保存用户数据以在多个请求之间保持状态的机制。具体来说,1)session通过session_start()函数启动,并通过$_SESSION超级全局数组存储和读取数据;2)session数据默认存储在服务器的临时文件中,但可通过数据库或内存存储优化;3)使用session可以实现用户登录状态跟踪和购物车管理等功能;4)需要注意session的安全传输和性能优化,以确保应用的安全性和效率。

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

绝对会话超时从会话创建时开始计时,闲置会话超时则从用户无操作时开始计时。绝对会话超时适用于需要严格控制会话生命周期的场景,如金融应用;闲置会话超时适合希望用户长时间保持会话活跃的应用,如社交媒体。

服务器会话失效可以通过以下步骤解决:1.检查服务器配置,确保会话设置正确。2.验证客户端cookies,确认浏览器支持并正确发送。3.检查会话存储服务,如Redis,确保其正常运行。4.审查应用代码,确保会话逻辑正确。通过这些步骤,可以有效诊断和修复会话问题,提升用户体验。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境