2011-12-24 112 views
-1

现在我有一个网站,我只允许五个人登录。如何使用javascript连接到我的数据库并更改用户名用户名

这5个人每次登录时都必须阅读NDA并在提供的两个文本框中键入他们的名字。名字和姓氏。当用户按下提交按钮时,如果他们的名字是正确的,他们会被带到该网站,或者如果他们输入的名字不是他们的名字,则会被注销。

现在我正在使用JavaScript来做到这一点,因为我不知道如何使用PHP来做到这一点。

如果用户第一次没有正确输入他的名字,我想让用户注销,就像我现在拥有的一样,而且我还希望通过将“xxx10017969”添加到他的用户名结尾。这将阻止他重新登录并要求他与我联系,以便我可以在数据库中修复他的用户名。

这里是HTML:

 <form method="post" action="index.php" style="width: 600px;"><p>By typing your first and last name below you are bound by this contract. If you type anything other than your first and last name, you will be logged out and your account will be deleted.</p> 
<p><input type="text" value="First Name" name="first_name" id="first_name" /> 
<input type="text" value="Last Name" name="family_name" id="last_name" /> 
<input type="date" value="Date" name="signiature" /></p> 
     <p><input type="button" value="Access Site" onclick="checkforname();" /><p> 
     </form> 

这里是我的javascript:

<script type="text/javascript"> 

    function checkforname() { 
    var fname = "<?php echo "$identity->first_name"; ?>"; 
    var lname = "<?php echo "$identity->family_name"; ?>"; 

    var enteredFname = document.getElementById("first_name").value; 
    var enteredLname = document.getElementById("last_name").value; 

    if (enteredFname == fname && enteredLname == lname) { 

    } 
    else { 
    window.location = ("login.php?logout"); 
    } 

    } 

    </script> 
+0

你应该总是使用PHP在服务器端做这样的验证。在客户端进行用户验证并不好,用户可以通过验证。 – Virendra 2011-12-24 21:45:51

+0

您的解决方案根本就不安全。 您是否知道用户的名字和姓氏是用纯文本编写的,如果检查页面的源代码,可以阅读? – 2011-12-24 21:46:11

+0

JavaScript是否在客户端的浏览器上运行?如果是这样,绝对没有什么能够阻止某人查看代码并绕过这个逻辑。 – wallyk 2011-12-24 21:47:09

回答

2

在PHP中做到这一点,而不是JavaScript代码 -

的形式提交到index.php,所以这是其中的逻辑应该是。 ?

如果你想利用你重定向到的login.php的方式注销,比的index.php就必须有代码这样的事情在里面:

<?php 

// Code to populate $identity from the database goes here 

// Checks if user entered fields match database record 
if ($identity->first_name != $_POST['first_name'] || 
    $identity->family_name != $_POST['family_name']) 
{ 
    // Code to disable account goes here, but need to see a sample of 
    // your existing php database code to show how to modify first_name 
    header("Location: login.php?logout"); 
} 

记住任何头应处理在php打印任何内容之前,包括换行符......所以如果index.php是一个“内联php”html页面,请确保在html部分开始之前在文件最顶部发生这种情况。开头的<?php标签应该在行1上。

另外,这里假定你有一种方法可以从会话或某事中再次查找用户,以获得用用户记录填充的$ identity变量。

还有一些其他的事情在理想情况下会在这里完成,比如在post字段中清理用户输入,并检查post字段是否为空而不生成警告,但这些是另一次的教训。

编辑:当它与数据库交互时,请显示您现有的php代码,比如它如何填充$ identity,否则无法提供特定的解决方案。

+0

所有这些都是检查用户是否是登录的人,对我来说基本上什么都不做。该页面已受此保护。请阅读以上我要求的内容。如果用户在登录时没有正确地签署他的名字,则用户名被更改,然后他被注销。该名称已更改,因此无法再次登录。 – 2011-12-24 22:20:44

+0

修改数据库中的first_name需要更多关于您的代码是否使用库或某种类型的框架连接到数据库的详细信息,或者只需要原始的php。另外考虑一个像“disabled”这样的新数据库列,而不是改变first_name,你会设置“disabled”= 1。从应用程序的其他地方看到一个数据库代码样本会有帮助 - 就像$ identity的人口也许? – codercake 2011-12-24 22:27:02

2

不能直接用JavaScript连接到服务器端的数据库,因为它是一个客户端的语言。将服务器端信息导入到JavaScript中通常是使用AJAX调用完成的,通知javascript将一些信息发布到服务器并获取响应,然后可以处理该响应。

1

你不应该使用JavaScript验证用户。它应该始终使用PHP在服务器端完成。在客户端进行用户验证并不好,用户可以通过验证。如果您使用上述代码,则用户名和密码将位于页面的源代码中,任何人都可以通过查看页面的源代码来查看它们。

我会推荐这样做。当用户输入名字和姓氏时,提交到login.php页面。使用PHP验证该页面上的用户,如果用户有效,允许他通过,否则重定向到login.php?注销页面。

+0

我不知道PHP,不知道该怎么做。现在,Javascript对我来说很好。 – 2011-12-24 22:08:25

相关问题