4

私はbackbone.jsを使い始めたばかりで、Nettutsでこのチュートリアルを使用しています。http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-backbone-js/

var user = Backbone.Model.extend({
   initialize: function(){
     console.log('user was initialized!');
   },
   defaults:{
      'name' : 'wern',
      'full_name' : 'rem falkner',
      'password' : 'secret',
      'email' : 'secret@gmail.com'
   }
})

var u = new user()

そして、saveメソッドを使用しました。

u.save(undefined, {url : 'inserts.php'})

Inserts.phpに含まれるもの:

<?php 
include('conn.php');

$name = $_POST['name'];
$password = md5($_POST['password']);
$email = $_POST['email'];

$db->query("INSERT INTO tbl_users SET user_id='$name', pword_hash='$password', full_name='$name', email='$email'");
?>

私のコードの何が問題になっていますか?save()メソッドを呼び出すと、ユーザーテーブルに何かが挿入されますが、パスワードフィールドにのみ挿入されるため、データベースに挿入されているようです。

4

2 に答える 2

7

.save() メソッドを呼び出すと、指定した URL に JSON オブジェクトが送信されます。モデルが新しい場合、POST メソッドが使用されます。JSON が PHP スクリプトで受信されたら、それをデコードしてモデル属性を保存する必要があります。属性ごとに 1 つのフィールドとしましょう。「inserts.php」でこれを変更します。

<?php 
    include('conn.php');

    $data = json_decode(file_get_contents('php://input'));
    $name = $data->{'name'};
    $password = md5($data->{'password'});
    $email = $data->{'email'};

    //proceed to add every variable to a field in the database
    //...
于 2012-06-08T12:38:47.220 に答える
0

$db->query の前の行の PHP コードで、次のようにします。

echo $name, '<br>', $password, '<br>', $email;

名前パスワードの電子メール フィールドを含む従来の HTML フォームを作成し、PHP スクリプトをテストして、入力した名前パスワードと電子メール アドレスが画面に表示されることを確認します。

これが成功した場合、エラーはおそらくデータベース クエリにあります。まず、コードが SQL インジェクションに対して脆弱であるように見えます。使用している DBMS (MySQL、MSSQL、PostgreSQL など) に関する情報を投稿する必要があります。とにかく、クエリは間違っているように見えます。CREATE TABLE コマンドも投稿してください。

于 2012-04-15T07:03:05.313 に答える