2013-07-18 4 views
-4

저는 php에 익숙하지 않고 php와 mysql을 사용하여 간단한 등록 양식을 만들려고했습니다. 튜토리얼을 따라 갔지만 작동하지 않는 것 같습니다.
여기 내 코드입니다 :가입 양식이 작동하지 않습니다.

con.php

<?php 
    $host = "******"; 
    $user = "******"; 
    $pass = "******"; 
    $db = '******'; 

    $con = mysql_connect($host,$user,$pass) or die('could not connect to database.'); 

    mysql_select_db($db,$con) or die('could not find database'); 
?> 

register.php

<?php 
    include "con.php"; 
    $username = $_POST['user_name']; 
    $password = md5($_POST['password']); 
    $first = $_POST['first']; 
    $last  = $_POST['last']; 
    $insert = "insert into users (user_name,password,first,last) values(".$username.",".$password.",".$first.",".$last.")"; 
    mysql_query($insert) or die("Sorry could not complete signup"); 
    echo 'Signup succsessfull'; 
?> 

HTML

<form action='register.php' method='post'> 
     <div style='color:orange;'>First name:</div> 
     <input type='text' name='first' value='<?php if(isset($_POST["first"])){echo $_POST["first"];}?>'> 
     <div style='color:orange;'>Last name:</div> 
     <input type='text' name='last' value='<?php if(isset($_POST["last"])){echo $_POST["last"];}?>'> 
     <div style='color:orange;'>User name:</div> 
     <input type='text' name='user_name' value='<?php if(isset($_POST["user_name"])){echo $_POST["user_name"];}?>'> 
     <div style='color:orange;'>Password:</div> 
     <input type='password' name='password'> 
     <input type='reset' value='Reset'> 
     <input type='submit' value='Submit'> 
    </form> 

내가 할 수 없기 때문에 누군가가 이것을 이해하는 데 도움이된다면 좋을 것입니다.

+4

[기존 ** 데이터베이스 API] (http://stackoverflow.com/q/12859942/19068)를 사용하고 있으며 [최신 대체] (http://php.net/manual/)를 사용해야합니다. en/mysqlinfo.api.choosing.php). 또한 ** [SQL 주입 공격] (http://bobby-tables.com/) **에 현대적인 API를 사용하면 쉽게 방어 할 수 있습니다 ** (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)을 사용하십시오. – Quentin

+1

당신은 [XSS에 취약합니다] (https://en.wikipedia.org/wiki/Cross-site_scripting) – Quentin

+0

PDO를 사용하십시오. 실제로는 꽤 간단합니다. – Callombert

답변

2
$insert = "insert into users (user_name,password,first,last) values(".$username.",".$password.",".$first.",".$last.")"; 

SQL의 문자열 값은 따옴표로 묶어야합니다. 귀하는 귀하의 데이터를 인용하지 않습니다.

in this answer과 같이 준비된 명령문 및 바운드 변수를 사용하여 데이터베이스 API가 따옴표를 추가합니다.

+1

또한이 "echo '가입 succsessfull';" 성공적으로 서명을 출력합니다. 삽입이 성공했는지 여부는 알려주지 않습니다. – Callombert

1
난 당신이 모든 변수에 따옴표를 추가 할 필요가 있도록, 필드의 VARCHAR의 데이터 유형을 selectd 한 생각으로
$insert = "insert into users (user_name,password,first,last) values('".$username."','".$password."','".$first."','".$last."')"; 

아래에 조회를 변경

.

관련 문제