0

达到的目标:

  • 允许用户注册的索引页面 ( index.html ),它在 JavaScript ( index.js ) 上运行以检查字段(片段index.js中提及),然后重定向到注册页面(脚本/ register.php),然后将值添加到数据库中。

实际发生了什么

  • 它正确重定向到 PHP 页面,但是在使用该方法时似乎没有任何值被传输$_GET:我得到一个空页面。

我究竟做错了什么?

代码:


index.html(只是一个片段)

<input name="user" type="text" id="user" size="25" />
<input name="email" type="text" id="email" size="25" />
<input name="pass" type="password" id="pass" size="25" />
<input type="submit" name="signup" id="signup" value="Sign Up" />
<script type = "text/javascript", src = "index.js">
</script>

index.js(只是一个片段)

document.getElementById("signup").onclick = signup;
var aref = "refcode";
function signup()
{
    window.location.href = 'scripts/register.php?emailaddress=' + document.getElementById("email").value + '&username=' + document.getElementById("user").value + '&password=' + document.getElementById("pass").value + '&aref=' + aref;
}

scripts/register.php(只是一个片段)

<?php 
echo $_GET['emailaddress'];
echo $_GET['username']; 
echo $_GET['password']; 
echo $_GET['aref'];
?>

编辑:我不小心复制了“scripts/register.php”的错误代码,对所有为我更正它的答案感到抱歉

4

5 回答 5

1

您永远不会提交表单(因为您似乎没有表单),因此除了嵌入到 URL 中的数据之外,您永远不会得到任何东西(这是非常不安全的,发送敏感数据(如密码)不是一个好主意) )。

但是,我不确定你为什么要把这样的事情复杂化。

如果你想使用 GET,不需要自己构建 URL,只需使用 GET 方法设置表单并使用常规提交发送它,不需要 javascript。为 aref 值使用隐藏字段(您可以在生成表单时填充它,在提交之前等,无论对您有用):

<form method="GET" action="scripts/register.php">
    <input name="aref" type="hidden" value="refcode" />
    <input name="user" type="text" id="user" size="25" />
    <input name="email" type="text" id="email" size="25" />
    <input name="pass" type="password" id="pass" size="25" />
    <input type="submit" name="signup" id="signup" value="Sign Up" />
</form>

同样,将方法更改为 POST 将是一个更好的主意。当然,接下来你需要访问 $_POST['aref'] 等变量。就像这样:

<form method="POST" action="scripts/register.php">
    <input name="aref" type="hidden" value="refcode" />
    <input name="user" type="text" id="user" size="25" />
    <input name="email" type="text" id="email" size="25" />
    <input name="pass" type="password" id="pass" size="25" />
    <input type="submit" name="signup" id="signup" value="Sign Up" />
</form>

和 PHP(用于 POST):

<?php 
echo $_POST['email'];
echo $_POST['user']; 
echo $_POST['pass']; 
echo $_POST['aref'];
?>
于 2013-10-28T18:37:48.797 回答
1

您的字段在 URL 和 register.php 中的命名方式不同。试试这个。

<?php 
echo $_GET['emailaddress'];
echo $_GET['username']; 
echo $_GET['password']; 
echo $_GET['aref'];
?>
于 2013-10-28T18:38:19.557 回答
0
window.location.href = 'scripts/register.php?emailaddress=' + document.getElementById("email").value + '&username=' + document.getElementById("user").value + '&password=' + document.getElementById("pass").value + '&aref=' + aref;

要访问它们:

$_GET['username']
$_GET['password']
etc...

在您的代码中,您永远不会使用好的变量名:

<?php 
echo $_GET['email'];
echo $_GET['user']; 
echo $_GET['pass']; 
echo $_GET['accountref'];
?>
于 2013-10-28T18:37:49.320 回答
0

对于没有 JS 和 PHP 的解决方案:

<form action="scripts/register.php?<? echo $refcode /* HERES YOUR REFCODE */?>" method="GET">
    <input name="user" type="text" id="user" size="25" />
    <input name="email" type="text" id="email" size="25" />
    <input name="pass" type="password" id="pass" size="25" />
    <input type="submit" name="signup" id="signup" value="Sign Up" />
</form>
于 2013-10-28T18:40:18.570 回答
0

执行所需操作的正常方法是method在表单中使用 Attribute 或.submit()在 jquery 中使用事件。我将展示我将如何做到这一点:

没有使用 javascript 的HTMLPOST

<form method="post" id="login_form" action='register.php'> 
  <input name="user" type="text" id="user" size="25" />
  <input name="email" type="text" id="email" size="25" />
  <input name="pass" type="password" id="pass" size="25" />
  <input type="submit" name="signup" id="signup" value="Sign Up" />
</form>

php使用 $_POST

$user = isset($_Post['user']) ? $_Post['user'] : NULL;
$email = isset($_Post['email']) ? $_Post['email'] : NULL;
$pass = isset($_Post['pass']) ? $_Post['pass'] : NULL;

使用Jquery的HTML

<form id="login_form" method="post" action=""> 
  <input name="user" type="text" id="user" size="25" />
  <input name="email" type="text" id="email" size="25" />
  <input name="pass" type="password" id="pass" size="25" />
  <input type="submit" name="signup" id="signup" value="Sign Up" />
</form>
<script type = "text/javascript" src = "index.js"></script>
//You have a type with a comma

JS

$('#login_form').submit(function(e){
  var data = $(this).serializeArray();
  $.post('register.php',data,
  function(result){
   //Your callback function
 })
})

注意 我给你的建议是在这种情况下你应该使用POST方法

GET requests a representation of the specified resource. Note that GET should not be used for operations that cause side-effects, such as using it for taking actions in web applications. One reason for this is that GET may be used arbitrarily by robots or crawlers, which should not need to consider the side effects that a request should cause.

POST submits data to be processed (e.g., from an HTML form) to the identified resource. The data is included in the body of the request. This may result in the creation of a new resource or the updates of existing resources or both.

所以本质上 GET 用于检索远程数据,而 POST 用于插入/更新远程数据。

于 2013-10-28T18:53:23.023 回答