Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 注册脚本,需要检查数据库输入,然后在注册时删除_Php_Mysql - Fatal编程技术网

Php 注册脚本,需要检查数据库输入,然后在注册时删除

Php 注册脚本,需要检查数据库输入,然后在注册时删除,php,mysql,Php,Mysql,我的脚本有问题。它应该做的是,当用户向表单注册时,它应该插入表单,但前提是“密钥”与我设置的另一个表中的密钥匹配。验证后,应将用户信息插入数据库,然后删除密钥。我似乎无法找出问题所在,当“passkey”表中只有一个输入时,它工作了,但当我插入更多输入时,它停止了工作。任何帮助都将不胜感激 代码如下: <?php session_start(); if ($_SESSION['auth'] == true) { header('location: ../../index.php');

我的脚本有问题。它应该做的是,当用户向表单注册时,它应该插入表单,但前提是“密钥”与我设置的另一个表中的密钥匹配。验证后,应将用户信息插入数据库,然后删除密钥。我似乎无法找出问题所在,当“passkey”表中只有一个输入时,它工作了,但当我插入更多输入时,它停止了工作。任何帮助都将不胜感激

代码如下:

<?php

session_start();

if ($_SESSION['auth'] == true)
{
header('location: ../../index.php');
}

else

{
include($_SERVER['DOCUMENT_ROOT']."/skole/system/db/DbConnector.php");

new DbConnector();

if ($_POST)
{
        $navn = mysql_real_escape_string($_POST['name']);
        $brukernavn = mysql_real_escape_string($_POST['username']);
        $passord = md5(mysql_real_escape_string($_POST['password']));
        $siste_logginn = date("d/m/y H:i:s");
        $logginn_ip = $_SERVER['REMOTE_ADDR'];
        $email = mysql_real_escape_string($_POST['email']);
        $passkey = mysql_real_escape_string($_POST['passkey']);

        $qGetPasskey = mysql_query("SELECT * FROM passkey");
        $rGetPasskey = mysql_fetch_array($qGetPasskey);

    if($rGetPasskey['passkey'] == $passkey)
        {

        mysql_query("INSERT INTO brukere SET navn = '{$navn}', brukernavn = '{$brukernavn}', passord = '{$passord}', siste_logginn = '{$siste_logginn}', logginn_ip= '{$logginn_ip}', email = '{$email}', passkey = '{$passkey}'");

    mysql_query("DELETE FROM passkey WHERE passkey = '{$passkey}'");

    echo 'Success';
    }
//header('location: ../../index.php');
}
else
{
echo 'Failure';
//header('location: ../../index.php?aksjon=register&feil=1');
}
}

?>
使用
或死亡(mysql_error())

查看您的查询中是否存在任何MySQL错误

例如:

mysql_query("INSERT INTO brukere SET navn = '{$navn}', brukernavn = '{$brukernavn}', passord = '{$passord}', siste_logginn = '{$siste_logginn}', logginn_ip= '{$logginn_ip}', email = '{$email}', passkey = '{$passkey}'") or die("Error ->".mysql_error());
使用
或die(mysql_error())

查看您的查询中是否存在任何MySQL错误

例如:

mysql_query("INSERT INTO brukere SET navn = '{$navn}', brukernavn = '{$brukernavn}', passord = '{$passord}', siste_logginn = '{$siste_logginn}', logginn_ip= '{$logginn_ip}', email = '{$email}', passkey = '{$passkey}'") or die("Error ->".mysql_error());

存储和检查密码的推荐方法是使用salted散列函数。
永远不要在数据库中存储未加密的密码! 见:

存储用户数据,包括passhash

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";
检查有效的用户名和密码

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";
当且仅当用户存在时才将数据插入表中

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";

请注意,在查询中不需要
{}
,只有在要计算表达式时才需要这些。如果您只想注入$var,
'$var'
{'$var'}
是相同的。

存储和检查密码的推荐方法是使用salted哈希函数。
永远不要在数据库中存储未加密的密码! 见:

存储用户数据,包括passhash

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";
检查有效的用户名和密码

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";
当且仅当用户存在时才将数据插入表中

INSERT INTO user (username, salt, passhash) 
VALUES ('$username','$salt',SHA2(concat('$salt','$password'),512))
SELECT id FROM user 
WHERE username = '$username' AND passhash = SHA2(concat('$salt','$password'),512)
$passkey = mysql_real_escape_string($_POST['passkey']);      
mysql_query("INSERT INTO brukere 
  (navn, brukernavn, passord, sisteloginn, loginn_ip, email, passhash) 
  SELECT 
    '$navn','$brukernavn','$passord', '$siste_logginn', '{$logginn_ip}', '{$email}', id
  FROM user u 
  WHERE u.username =  '$brukernavn' 
    AND passhash = SHA2(concat(u.salt,'$passkey'),512) ";

请注意,在查询中不需要
{}
,只有在要计算表达式时才需要这些。如果只想注入$var,
'$var'
{'$var'}
是相同的。

我认为它不匹配,因为数组中没有检查多个记录的循环

试试这个:

    $qGetPasskey = mysql_query("SELECT * FROM passkey");
    while($rGetPasskey = mysql_fetch_array($qGetPasskey)) {
        if($rGetPasskey['passkey'] == $passkey) {

        mysql_query("INSERT INTO brukere SET navn = '{$navn}', brukernavn = '{$brukernavn}', passord = '{$passord}', siste_logginn = '{$siste_logginn}', logginn_ip= '{$logginn_ip}', email = '{$email}', passkey = '{$passkey}'");

       mysql_query("DELETE FROM passkey WHERE passkey = '{$passkey}'");

        echo 'Success';
        }
   }

我希望有帮助

我认为它不匹配,因为没有循环来检查数组中的多个记录

试试这个:

    $qGetPasskey = mysql_query("SELECT * FROM passkey");
    while($rGetPasskey = mysql_fetch_array($qGetPasskey)) {
        if($rGetPasskey['passkey'] == $passkey) {

        mysql_query("INSERT INTO brukere SET navn = '{$navn}', brukernavn = '{$brukernavn}', passord = '{$passord}', siste_logginn = '{$siste_logginn}', logginn_ip= '{$logginn_ip}', email = '{$email}', passkey = '{$passkey}'");

       mysql_query("DELETE FROM passkey WHERE passkey = '{$passkey}'");

        echo 'Success';
        }
   }

我希望有帮助

我只是在两个查询上都试过了,但是没有显示任何内容,所以我假设查询没有问题,或者问题还没有执行,但是我看不出问题可能在哪里。我只是在两个查询上都试过,但是没有显示任何内容,所以我假设查询没有问题,或者问题还没有执行,但我看不出问题可能在哪里。没有问题,有时当我们对自己的代码太深入时,特别是当我们在代码上工作太久时,一双新的眼睛可以发现我们看不见的东西。没有问题,有时当我们对自己的代码太深入时,特别是当我们研究它太久的时候,一双新的眼睛可以发现我们看不见的东西。