为何使用jQuery在第二页加载带define校验的PHP页面无法正常工作?
问题原因分析
你的问题核心在于PHP服务器端代码与客户端JS代码的执行上下文完全独立:
- 第二页中的
define("link", true);是服务器端处理该页面请求时执行的,这个常量仅存在于当前页面的服务器进程上下文里,不会被客户端浏览器保存或传递。 - 当客户端执行
$("#load").load("sayfa.php");时,浏览器会发起一个全新的HTTP请求去访问sayfa.php。这个新请求的服务器上下文和第二页的请求完全无关,并没有定义link常量,因此sayfa.php里的if(!defined("link"))条件成立,直接执行exit("hata"),导致加载结果为"hata"而非预期内容。
可行的解决思路
- 通过URL参数传递验证标识:
修改第二页的JS代码:
对应修改$("#load").load("sayfa.php?valid=1");sayfa.php:if(!isset($_GET['valid']) || $_GET['valid'] != 1){ exit("hata"); } - 使用Session保存验证状态:
第二页初始化Session并设置标识:session_start(); $_SESSION['allowed'] = true;sayfa.php中检查Session:session_start(); if(!isset($_SESSION['allowed']) || $_SESSION['allowed'] !== true){ exit("hata"); }
内容的提问来源于stack exchange,提问作者shukur gumbatov
相关产品推荐
相关产品推荐

