2013-02-14 2 views
1

나는 PHP에 대해 아주 익숙하며 로빈 닉슨 (Robin Nixon)에 의해 PHP, MySQL, JavaScript & CSS 학습을 배우고있다. 데이터베이스에 사용자 이름과 암호를 삽입하는 스크립트를 작성 중입니다. 이 책은 양식 필드에서 데이터를 삽입하는 코드를 입력한다고 말합니다. 나는 (/ * /사이에) 그 일을 시도했지만 그 질문은 저에게 오류를줍니다. 또한 쿼리를 생략해도 오류는 없습니다. 검색어를 입력하면/ * /에있는 댓글 바로 뒤에 오류가 자바 스크립트에 표시됩니다.양식에서 데이터 삽입하기

<?php // adduser.php 
require_once 'login.php'; 


$forename = $surname = $username = $password = $age = $email = ""; 

if (isset($_POST['forename'])) 
$forename = fix_string($_POST['forename']); 
if (isset($_POST['surname'])) 
$surname = fix_string($_POST['surname']); 
if (isset($_POST['username'])) 
$username = fix_string($_POST['username']); 
if (isset($_POST['password'])) 
$password = fix_string($_POST['password']); 
if (isset($_POST['email'])) 
$email = fix_string($_POST['email']); 

$fail = validate_forename($forename); 
$fail .= validate_surname($surname); 
$fail .= validate_username($username); 
$fail .= validate_password($password); 
$fail .= validate_age($age); 
$fail .= validate_email($email); 

echo "<html><head><title>An Example Form</title>"; 

if ($fail == "") { 
echo "</head><body>Form data successfully validated: $forename, 
    $surname, $username, $password, $age, $email.</body></html>"; 

/*  require_once 'login.php'; 
$db_server = mysqli_connect($db_hostname, $db_username, $db_password, 
      $db_database) or die('Error connecting to MySQL server.'); 


$forename = mysqli_real_escape_string(db_server, trim($_POST['forename'])); 
$surname = mysqli_real_escape_string(db_server, trim($_POST['surname'])); 
$username = mysqli_real_escape_string(db_server, trim($_POST['username'])); 
$password = mysqli_real_escape_string(db_server, trim($_POST['password'])); 
$email = mysqli_real_escape_string(db_server, trim($_POST['email'])); 

$query = "INSERT INTO users VALUES" . "('$forename', '$surname', ". 
     "'$username', '$password', '$email'); 
$result = mysqli_query($db_server, $query); ". 
    "or die('Error querying database.'); 

mysqli_close($db_database); */  


exit; 

} 



echo <<<_END 


<style>.signup { border: 1px solid #999999; 
font: normal 14px helvetica; color:#444444; }</style> 
<script type="text/javascript"> 
function validate(form) 
{ 
fail = validateForename(form.forename.value) 
fail += validateSurname(form.surname.value) 
fail += validateUsername(form.username.value) 
fail += validatePassword(form.password.value) 
fail += validateEmail(form.email.value) 
if (fail == "") return true 
else { alert(fail); return false } 
} 
</script></head><body> 
<table class="signup" border="0" cellpadding="2" 
cellspacing="5" bgcolor="#eeeeee"> 
<th colspan="2" align="center">Signup Form</th> 

<tr><td colspan="2">Sorry, the following errors were found<br /> 
in your form: <p><font color=red size=1><i>$fail</i></font></p> 
</td></tr> 

<form method="post" action="adduser.php" 
onSubmit="return validate(this)"> 
<tr><td>Forename</td><td><input type="text" maxlength="32" 
name="forename" value="$forename" /></td> 
</tr><tr><td>Surname</td><td><input type="text" maxlength="32" 
name="surname" value="$surname" /></td> 
</tr><tr><td>Username</td><td><input type="text" maxlength="16" 
name="username" value="$username" /></td> 
</tr><tr><td>Password</td><td><input type="text" maxlength="12" 
name="password" value="$password" /></td> 
</tr><tr><td>Age</td><td><input type="text" maxlength="3" 
name="age" value="$age" /></td> 
</tr><tr><td>Email</td><td><input type="text" maxlength="64" 
name="email" value="$email" /></td> 
</tr><tr><td colspan="2" align="center"> 
<input type="submit" value="Signup" /></td> 
</tr></form></table> 



<script type="text/javascript"> 
function validateForename(field) { 
if (field == "") return "No Forename was entered.\\n" 
return "" 
} 

function validateSurname(field) { 
if (field == "") return "No Surname was entered.\\n" 
return "" 
} 

function validateUsername(field) { 
if (field == "") return "No Username was entered.\\n" 
else if (field.length < 5) 
    return "Usernames must be at least 5 characters.\\n" 
else if (/[^a-zA-Z0-9_-]/.test(field)) 
    return "Only letters, numbers, - and _ in usernames.\\n" 
return "" 
} 

function validatePassword(field) { 
if (field == "") return "No Password was entered.\\n" 
else if (field.length < 6) 
    return "Passwords must be at least 6 characters.\\n" 
else if (! /[a-z]/.test(field) || 
     ! /[A-Z]/.test(field) || 
     ! /[0-9]/.test(field)) 
    return "Passwords require one each of a-z, A-Z and 0-9.\\n" 
return "" 
} 

function validateAge(field) { 
if (isNaN(field)) return "No Age was entered.\\n" 
else if (field < 18 || field > 110) 
    return "Age must be between 18 and 110.\\n" 
return "" 
} 

function validateEmail(field) { 
if (field == "") return "No Email was entered.\\n" 
    else if (!((field.indexOf(".") > 0) && 
       (field.indexOf("@") > 0)) || 
       /[^[email protected]_-]/.test(field)) 
    return "The Email address is invalid.\\n" 
return "" 
} 
</script></body></html> 
_END; 


function validate_forename($field) { 
if ($field == "") return "No Forename was entered<br />"; 
return ""; 
} 

function validate_surname($field) { 
if ($field == "") return "No Surname was entered<br />"; 
return ""; 
} 

function validate_username($field) { 
if ($field == "") return "No Username was entered<br />"; 
else if (strlen($field) < 5) 
    return "Usernames must be at least 5 characters<br />"; 
else if (preg_match("/[^a-zA-Z0-9_-]/", $field)) 
    return "Only letters, numbers, - and _ in usernames<br />"; 
return "";  
} 

function validate_password($field) { 
if ($field == "") return "No Password was entered<br />"; 
else if (strlen($field) < 6) 
    return "Passwords must be at least 6 characters<br />"; 
else if (!preg_match("/[a-z]/", $field) || 
     !preg_match("/[A-Z]/", $field) || 
     !preg_match("/[0-9]/", $field)) 
    return "Passwords require 1 each of a-z, A-Z and 0-9<br />"; 
return ""; 
} 

function validate_email($field) { 
if ($field == "") return "No Email was entered<br />"; 
    else if (!((strpos($field, ".") > 0) && 
       (strpos($field, "@") > 0)) || 
       preg_match("/[^[email protected]_-]/", $field)) 
    return "The Email address is invalid<br />"; 
return ""; 
} 

function fix_string($string) { 
if (get_magic_quotes_gpc()) $string = stripslashes($string); 
return htmlentities ($string); 
} 
?> 
+2

어떤 오류가 발생하는지 알려줄 수 있습니까? – MarcinWolny

+2

아니요, 아니요, 아니요, 아니요. ** 비밀 번호를 일반 텍스트로 저장하지 마십시오 **. 이것은 무엇을 해야할지 배우는 동안 테스트 응용 프로그램 일 수 있지만 처음에는 제대로 할 수 있습니다 (https://github.com/ircmaxell/password_compat) (또는 [여기] (http : //php.net/password_hash) PHP 5.5 이상인 경우). – Mike

+0

[오래된 ** 데이터베이스 API] (http://stackoverflow.com/q/12859942/19068)를 사용하고 있으며 [최신 대체] (http://php.net/manual/ko/)를 사용해야합니다. mysqlinfo.api.choosing.php). – Quentin

답변

0

/**/이 블록 주석을 삽입 연산자입니다 스크립트 또한

그들을 제거하고 실행 해 오류는 무엇을 말하는가?

은 편집 :

받고있는 오류는 서버가 PHP 코드로 위의 자바 스크립트 코드를 읽을 시도 의미하는 ?> 태그로 PHP 코드를 폐쇄하지 않음으로써 발생합니다.

주석 처리기 /**/은 서버에서 코드를 실행하지 않도록하기 위해 여전히 생략해야합니다.

관련 문제