我有一个目录结构:
/Users/Eamon/Sites:
-js
application.js
-reqscripts
jquery.js
-templates
login_success.php
logout.php
checklogin.php
checkreglogin.php
index.php
我正在建立一个简单的登录系统。登录后,我被重定向到“checklogin.php”,并出现一个空白页面。关于引用目录结构,我认为我做错了(在一些地方......可能)。
的application.js
$(document).ready(function() {
$("#login").submit(function(e) {
e.preventDefault();
$.post('../checklogin.php', $(this).serialize(), function(){
$("#showuser").load("../templates/login_success.php");
$("#login").remove();
$("#register").remove();
});
});
$("#register").submit(function(e) {
e.preventDefault();
$.post('../checkreglogin.php', $(this).serialize(), function(){
$("#showuser").load("../templates/login_success.php");
$("#login").remove();
$("#register").remove();
});
});
});
上面,我在“$ .post”调用中引用了目录结构 - 以及在post调用函数中引用。
login_success.php
<?php
session_start();
if($_SESSION['username'] === null){
header("location:index.php");
}
?>
<!DOCTYPE html>
<html>
<body>
<h1>Login Successful</h1>
<h2>Username: <? echo $_SESSION['username']?></h2>
<a href = "logout.php">Log out</a>
</body>
</html>
“header”和html链接中引用的dir结构。
logout.php
<?php
session_start();
session_destroy();
?>
<!DOCTYPE html>
<html>
<body>
You have been logged out.
<a href = "../index.php">Log in</a>
</body>
</html>
html链接中引用的目录结构。
的index.php
<!DOCTYPE html>
<html>
<head>
<title>it IT</title>
<script src="reqscripts/jquery.js"></script>
<script src="js/application.js"></script>
</head>
<body>
<form name="login" method="post" action="checklogin.php">
<h1>Member Login</h1>
<p>Username:<input name="myusername" type="text" id="myusername"></p>
<p>Password:<input name="mypassword" type="password" id="mypassword"></p>
<input type="submit" name="Submit" value="Login">
</form>
<form name="register" method="post" action="checkreglogin.php">
<h1>Member Registration</h1>
<p>Username:<input name="rmyusername" type="text" id="rmyusername"></p>
<p>Password:<input name="rmypassword" type="password" id="rmypassword"></p>
<p>Email:<input name="myemail" type="text" id="myemail"></p>
<input type="submit" name="Submit" value="Register">
</form>
<div id="showuser"></div>
</body>
</html>
jquery.js和application.js在“head”部分中引用。表单的动作标签也引用了dir结构。
我指出的所有这些地方都需要加以研究 - 无论我在哪里引用dir结构。
更新
将此添加到index.php head:
<script language="text/javascript">
var baseDir = "<? echo BASEDIR ?>";
</script>
在application.js中,更改了此内容:
$.post('../checklogin.php', $(this).serialize(), function(){
到此:
$.post(baseDir+"/checklogin.php", $(this).serialize(), function(){
和此:
$("#showuser").load("../templates/login_success.php");
到此:
$("#showuser").load(baseDir+"/templates/login_success.php");
仍然得到相同的结果......
更新
更改:
var baseDir = "<? echo BASEDIR ?>";
为:
var baseDir = "<? echo $_SERVER['SERVER_NAME'] ?>";
我找不到关于“BASEDIR”的任何文档,所以我认为它已被折旧。
仍然没有运气......
要明确的是,如果我将所有文件放在同一个目录文件夹中......一切正常......
答案 0 :(得分:0)
使用.. $("#showuser").load("../templates/login_success.php");
的javascript无法正常工作,因为它正被加载到index.php页面中。这意味着javascript“不知道”它在js目录中。
您应该删除相对路径../
并使用相对于基础目录的路径:
$.ajax({url: baseDir + "/session.php", success: function(data) {
You will need to set the baseDir Javascript variable in Top.php:
<script language="text/javascript">
var baseDir = "<?php echo BASEDIR; ?>";
</script>
在此处找到基础答案:Linking javascript BASEDIR
此外,表单没有jQuery函数正在查找的id标记,添加:
<form id="login" name="login" method="post" action="checklogin.php">
<form id="register" name="register" method="post" action="checkreglogin.php">