2013-05-25 5 views
0

데이터베이스 'db2'에 'Directors'라는 테이블이 있습니다. HTML 양식이 있습니다. 값을 삽입하고 제출 버튼을 누르면 일부 유효성 검사가 완료된 후 (INSERT INTO에 대한) 새 행의 표에 내용을 삽입합니다 (스크립트에서주의 할 것입니다). 나는 혼자 힘으로 노력했지만 항상 '실패'라고 말하고있다.테이블에 삽입 할 수 없습니다. PHP/MySQL

<form action="process.php" method="post" accept-charset="utf-8"> 
<input type="hidden" name="pages_edit_nonce" />   

      <div class="section-item page-title-section"> 
       <label for="title">Full Name:</label><span class="help">*</span><div class="input-wrap"><input type="text" name="name" value="" /></div>  </div> 



    <div class="section-item"> 
     <label for="label">Phone:</label><span class="help">*Optionally</span><div class="input-wrap"><input type="text" name="phone" value="" /></div>  </div> 

    <div class="section-item"> 
     <label for="redirect">Е-mail:</label><span class="help">*</span><div class="input-wrap"><input type="text" name="email" value="" placeholder="" /></div>  </div> 

    <div class="section-item"> 
     <label for="redirect">School:</label><span class="help">*</span><div class="input-wrap"><input type="text" name="school" value="" placeholder="" /></div>  </div> 

    <div class="section-item"> 
     <label for="redirect">City:</label><span class="help">*</span><div class="input-wrap"><input type="text" name="city" value="" placeholder="" /></div>  </div> 

    <div class="section-item"> 
     <label for="redirect">Password:</label><span class="help">*</span><div class="input-wrap"><input type="password" name="password" value="" placeholder="" /></div>  </div> 

    <div class="admin-bar"> 
     <div class="admin-bar-inner"> 


      <input type="submit" value="Submit" class="btn" /> 
     </div> 
    </div> 

    </form> 

이 내 process.php 파일입니다 :

$server = "localhost"; 
    $user = "****"; 
    $pass = "****"; 

    $conn = mysql_connect($server, $user, $pass); 
    $db = mysql_select_db("****", $conn); 
    session_start(); 
    if(!$db) { 
     $_SESSION['ERRMSG'] = "<strong>Error:</strong> The access to the database is denied!"; 
     header("Location: ../../admin/error/"); 
     exit(); 
    } 

    session_start(); 

    function UniqueID() { 
     $UID = rand(); //Create unique ID 
     $check = mysql_query("SELECT * FROM `Directors` WHERE `UID` = '$UID'"); 
     if(mysql_num_rows($check) > 0) { //Check if it exists 
      UniqueID(); //Redo the function 
     } else { 
      return $UID; //return the uniqueid 
     } 
    } 

    $UID = UniqueID(); //Unique ID 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $name = $_POST['name']; 
    $phone = $_POST['phone']; 
    $school = $_POST['school']; 
    $city = $_POST['city']; 

    //Create INSERT query 
    $qry = "INSERT INTO `oclass`.`Directors`(`UID`,`Name`, `Phone`, `Email`, `SchoolGymnasium`, `City`, `Password`) VALUES('$UID','$name','$phone','$email','$school','$city','" . md5($password) . "')"; 
    $result = mysql_query($qry); 

    //Check whether the query was successful or not 
    if($result) { 
     $_SESSION['SUCCMSGADDDIR'] = 'Sucessful.'; 
     header("location: URL"); 
     exit(); 
    } else { 
     $_SESSION['ERRMSGADDDIR'] = 'Fail'; 
     header("location: URL"); 
    } 

mysql_error를 가진 오류 세션 (변경 후) 그것이 나에게 다음과 같은 오류 준 : 치명적인 오류 : 이 내 HTML 양식입니다 수 10 번 줄에서 쓰기 문맥에서 함수 반환 값을 사용하지 않습니다. 라인 (10)은 다음과 같습니다

mysql_error() = "<strong>Error:</strong> The access to the database is denied!"; 

나는 기본 키 열 이름 ID (기본 키가이었다) 및 설정 UID 열을 제거했습니다, 지금 노력하고 있습니다. 고마워.

+1

항상 "실패"하면 if ($ result)가 false를 반환한다는 것을 의미합니다. 즉, $ result 이 경우 잘못된 쿼리 (mysql 오류)로 인해 발생하는 유효한 리소스가 아닙니다. 에코 mysql_error 그리고 당신이 무엇을지고 있는지보십시오. –

+3

mysql_ *이 아닌'PDO' 나'mysqli'를 사용해보십시오. 어쨌든, 쿼리를 디버깅하려면 실패한 세션의 값을 mysql_error()로 변경하고 출력을 공유하십시오. –

+0

mysql_error()로 $ _SESSION [ 'SUCCMSGADDDIR']을 (를) 변경 하시겠습니까? –

답변

0

먼저 SQL 주입 http://en.wikipedia.org/wiki/SQL_injection에 대해 들어 본 적이 없어야합니다. 현재 코드가 공격을 위해 당신을 개방하고 있습니다. 사용자 입력을 데이터베이스에 직접 삽입 할 수는 없습니다. 또한 mysql_ * 함수는 더 이상 사용되지 않습니다. 코드가보다 안전 해지고 더 많이 업데이트되도록하려면 다음과 같이하십시오 :

관련 문제