SPA 登录系统的开始

2024-01-06

我正在尝试使用 php/mysql/jquery 实现一个简单的登录系统。我希望它成为一个单页应用程序,所以我的“index.php”是这样的:

<?php session_start(); ?>

<!DOCTYPE html>
<html>
<head>
<title>it IT</title>
<script src="reqscripts/jquery.js" type="text/javascript"></script>
<script src="js/application.js" type="text/javascript"></script>
</head>
<body>
    <div id="main"></div>
</body>
</html>

我的 jquery 有这个:

js/application.js

$(document).ready(function() {
    $("#main").load("templates/indexforms.php");

    $("#login").submit(function(e) {
        e.preventDefault();
        $.post("checklogin.php", $(this).serialize(), function(){
            $("#main").load("templates/login_success.php");
            $("#login").remove();
            $("#register").remove();
        });
    });
});

该表单被加载(templates/indexforms.php):

<?php session_start(); ?>

<form id="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>

现在,当我尝试登录时 - 它被卡住了localhost/~Eamon/checklogin.php(其中没有任何 html)并且呈现一个完全空白的页面(根本没有源代码)。我需要在我的 indexforms.php 模板中包含应用程序 .js 吗?我会在哪里做这个?另外,如果你看看我的 jquery,我会在 DOM 准备好后立即加载表单 - 但在表单提交时......表单应该被删除 - 并且应该加载 login_success.php 。

UPDATE

检查登录.php

<?php

session_start();

$host="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="itit"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
$mysqli = new mysqli("$host", "$username", "$password", "$db_name")or die("cannot connect");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

$sql = $mysqli->prepare("SELECT * FROM $tbl_name WHERE username=? and password=?");
$sql->bind_param('ss',$myusername,$mypassword);
$sql->execute();
$sql->store_result();//apply to prepare statement
$numRows = $sql->num_rows;

if($numRows === 1){
    $_SESSION['username'] = $myusername;
}
else {
    echo "Wrong Username or Password";
    session_destroy();
}
?>

UPDATE

我认为我的 javascript 文件没有被加载。我放alert("here")在 e.preventDefault 之前没有任何反应...我的 application.js 文件的第二行是否搞砸了?为什么没有加载?

我在这里找到了这个 - 这对任何人有帮助吗?

使用 script 标签加载的 JavaScript 文件本质上是阻塞的。下载和执行脚本时,页面上发生或加载的所有事情都会停止。请记住,这适用于每个脚本标签。某些现代浏览器可能允许您并行下载这些内容,但页面的其余部分仍然无法执行任何有意义的操作

UPDATE

I put echo "success"在 checklogin.php 的 if 块内...像这样(在底部):

...

if($numRows === 1){
    $_SESSION['username'] = $myusername;
    echo "success";
}
else {
    echo "Wrong Username or Password";
    session_destroy();
}
?>

但它永远不会到达那里。如果我把它放在 if 语句之前,它会显示回显消息...这意味着在我的数据库中找不到该用户...或类似的东西?

UPDATE

Put var_dump($numRows) after $numRows = $sql->num_rows;像这样:

...

$numRows = $sql->num_rows;
var_dump($numRows);

if($numRows === 1){
    $_SESSION['username'] = $myusername;
}
...

我得到 int(1) 作为响应...

UPDATE

更改 checklogin.php 中的 if 条件:

if($numRows === "int(1)"){
    $_SESSION['username'] = $myusername;
}
else {
    echo "Wrong Username or Password";
    session_destroy();
}

else 块被执行,我看到“错误的用户名或密码”——正如我应该的那样。

UPDATE

将 jquery 代码更改为这样...仍然没有运气:

$(document).ready(function() {
    $("#main").load("templates/indexforms.php", function () {
        $("#login").submit(function(e) {
            e.preventDefault();
            $.post("checklogin.php", $(this).serialize(), function() {
                $("#main").load("templates/login_success.php");
                $("#login").remove();
                $("#register").remove();
            });
        });
    });
});

更正

上面的代码是正确的!我只需要重新启动服务器!谢谢!

UPDATE

发现新问题了,请教:简单的登录系统spa/php/mysql/jquery https://stackoverflow.com/questions/17157901/simple-login-system-spa-php-mysql-jquery


尝试将 JavaScript 更改为:

$(document).ready(function()
{

  $("#main").load("templates/indexforms.php", function ()
  {

    $("#login").submit(function(e)
    {

      e.preventDefault();

      $.post("checklogin.php", $(this).serialize(), function()
      {
        $("#main").load("templates/login_success.php");
        $("#login").remove();
        $("#register").remove();
      });

    }
    )

  }
  )

}
)

请注意,该脚本会等待indexforms.php已加载到#main在添加提交事件之前#login(目前它正试图(几乎)同时做到这一点,所以$("#login").submit(...在有任何之前运行#login元素)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SPA 登录系统的开始 的相关文章

  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 如何以编程方式处理 JqGrid 事件?

    我正在使用JqG rid 的 ASP NET 包装器 http www trirand net demoaspnet aspx 我想以编程方式连接一些网格的处理程序events http www trirand com jqgridwiki
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 动态地将工具提示文本设置为 div 元素

    我正在尝试动态地将工具提示文本设置为容器 div 并对我刚刚添加到有序列表的每个 div 元素 elem Alias Status 使用 jQuery function addNewElement elem var li li li li
  • 如何使用 JQuery 动态排序

    如果我有一个下拉列表和一个列表框 有没有办法使用 JQuery 根据下拉列表对列表框进行排序 举个例子会很有帮助 这会改变下拉菜单中的顺序 您必须根据自己的标准设置顺序
  • Coldfusion 跨站点身份验证

    好的 在我正在开发的 Coldfusion 网站上 我刚刚安装了一个名为 Galleon 的第三方 开源 CF 论坛 我不久前问过类似的问题 但现在我们已经取得了一些进展 目前的问题是 它不会识别父站点本身存在的任何变量 会话等 论坛本身存
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • Schema.org 的常见问题解答页面

    我有一个常见问题解答页面 我想用更好的 html 架构来实现它
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val
  • jQuery 对象相等

    如何确定两个 jQuery 对象是否相等 我希望能够在数组中搜索特定的 jQuery 对象 inArray jqobj my array 1 alert deviceTypeRoot deviceTypeRoot False alert d
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐