1

実際、私は XML を使用して Flash Web ページで作業しています。PHP を使用して MySQL データベースにデータを挿入する XML を使用したサインアップ ページを作成したいのですが、行き詰っています...そして、私の XML-PHP の知識はこの義務を果たすには十分ではありません。

これは XML ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<data>
<title>Sing up</title>
<request field1="user" field2="email" field3="password" field4="other">reg.php</request>
<description><![CDATA[Please sing up!]]></description>
</data>

reg PHP ファイル:

        <?php

        function Reg()
        {
            if (isset($_POST['reg'])==true) {
                     require_once('db_conf.php'); 
                $user = $_POST['username'];
                $pass = sha1(strtoupper($user.':'.$_POST['password'])); 
                $email = $_POST['email'];

                $con = mysql_connect($dbhost, $dbuser, $dbpassword);

                if (!$con) 
                { 
                    die('Could not connect!'); 
                } else {
                    mysql_select_db("$logondb", $con); 

                    $sql="INSERT INTO accounts (username, sha_pass_hash, email) VALUES ('$user','$pass','$email')"; 

                    if (!mysql_query($sql,$con)) 
                    { 
                        die('Error creating account.'); 
                    } 

                    echo $succesmsg; 

                    mysql_close($con);

                } 


            } else {
?>

データベース用の PHP conf:

    <?php
$dbhost = 'localhost';

$dbuser = 'user';

$dbpassword = 'password';

// Accounts Database
$logondb = 'accounts';

$errormsg="Error creating account..";

$succesmsg="Account created!";
?>
4

1 に答える 1

0

代わりに PDO を使用することをお勧めします。これはより一般的なアプローチです。そして、データバインディングを使用して、SQL インジェクションに対する脆弱性を軽減する必要があります...

これにより、さらに一歩進める必要があります。

<?php

        function Reg()
        {
            if (isset($_POST['reg'])==true) {
                require_once('./db_conf.php'); 
                $user = $_POST['username'];
                $pass = sha1(strtoupper($user.':'.$_POST['password'])); 
                $email = $_POST['email'];

                $dsn = "mysql:host=$dbhost;dbname=$logondb";
                $pdo = new PDO($dsn,$dbuser,$dbpassword);

                if (!$pdo) 
                { 
                    die('Could not connect!'); 
                } else {
                    $sql = "INSERT INTO accounts (username, sha_pass_hash,email) VALUES (:user,:pass,:email)";
                    $stmt = $pdo->prepare($sql);
                    $res = $stmt->execute(array("user"=>$user , "pass"=>$pass , "email" => $email));
                    if (!$res) {
                        echo "Error :((<pre>";
                        var_dump($stmt->errorInfo());
                        echo "</pre>";
                    } else 
                    {
                        echo $succesmsg; 
                    }


                } 
            } else {
                echo "reg was not set - terminating...!";
            }

        }

        Reg();  // execute it!

?>
于 2013-07-17T11:01:17.597 に答える