0

我正要为此扯掉我的头发。我正在构建一个测试站点,我的测试表单似乎运行良好,但是当我提交表单时,它显示“找不到页面”。这可能是愚蠢的,但我做错了什么?

这是我的代码:

<?php

if(isset($_POST['username']) && isset($_POST['password']))
{
$db =connect('jsnow_jsnow','missysnow2005');
if($db!=false)
{
   register($db);
   echo "User registered";
} 

}

function connect($dbuser,$dbpassword)
{
    try{
        $db = new  PDO('mysql:host=localhost;dbname=jsnow_login',$dbuser,$dbpassword);
        return $db;
    }catch(PDOException $e){
        echo $e;
        return false;}
}

function register($db)
{
    $user = mysql_real_escape_string($_POST['username']);
    $password = sha1($_POST['password']);
    $email = mysql_real_escape_string($_POST['e_mail']);

    $query = "INSERT INTO members(username,password,email) values('".$user."','".$password."','".$email."')";
    try{
        $db->eginTransaction();
        $db->exec($query);
        $db->commit();
        echo "commit succesful";
    }catch(Exception $e){}
}




?>


<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="http://localhost/jsnow_login/registration.php" method="post">
username:<input type="text" name="username"/>
password:<input type="password" name="password"/>
email<input type="text" name="e_mail"/>
<input type="submit"/>

</form>


</body>
</html>
4

1 回答 1

1

http://localhost/jsnow_login/registration/php可能应该替换为位于底部http://localhost/jsnow_login/registration.php的字符串<form action=

并且您可能错误地创建了 PDO 连接。

示例连接:

$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$dbh = new PDO($dsn, $user, $password);

$dsn = 'uri:file:///usr/local/dbconnect';
$dbh = new PDO($dsn, $user, $password); 

如果您的 PDO 连接设置不正确,您将看到类似...异常“PDOException”和消息“找不到驱动程序”的错误。输入数据库所在位置的正确路径,而不是您正在处理的当前页面的 URL。

PDO 连接文档

而不是使用 mysql_real_escape_string... 因为您使用的是 PDO,您应该绑定参数以防止 sql 注入:

$result_set = $pdo->prepare("INSERT INTO `users` (`username`, `password`, `first_name`, `last_name`) 
                                VALUES (:username, :password, :first_name, :last_name)");
$result_set->execute(array(
    ':username' => $username, ':password' => $password,
    ':first_name' => $firstname, ':last_name' => $lastname
));
于 2013-10-16T18:46:45.653 回答