0

我有一个目录结构:

/Users/Eamon/Sites:
  -js
    application.js
  -reqscripts
    jquery.js
  -templates
    login_success.php
    logout.php 
checklogin.php
checkreglogin.php
index.php

我正在建立一个简单的登录系统。登录后,我被重定向到“checklogin.php”,并出现一个空白页面。我认为我在引用目录结构方面做错了(在一些地方......可能)。

应用程序.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>

“标题”和 html 链接中引用的 dir 结构。

注销.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 链接中引用的目录结构。

索引.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 头中:

<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”的任何文档,所以我认为它已经贬值了。

还是没有运气...

为了清楚起见,如果我将所有文件放在同一个目录文件夹中......一切正常......

4

1 回答 1

0

使用 .. 的 javascript$("#showuser").load("../templates/login_success.php");将不起作用,因为它正在加载到 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>

在这里找到了 basedir 的答案: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">
于 2013-06-13T17:37:37.300 回答