2017-02-21 1 views
0

PHP 및 MySQL로 사용자 등록 및 로그인을 설정하려고합니다. 나는 그것이 작동해야하는 시점에 이르렀지만 실제로 Register 단추를 클릭 한 후에 빈 페이지 이외의 것을 얻으려고 애 쓰고 있습니다. 내 'db.php'파일의 자격 증명을 변경하면 오류가 발생하므로 데이터베이스가 잘 연결되고 있음을 알고 있습니다. 나는 PHP 쇼 오류를 만들려고했지만 아무 소용이 없어도 여전히 빈 페이지!제출 후 빈 페이지가 나타나는 사용자 등록 양식

다음 코드에 문제가 발생할 수있는 것으로 튀어 나와있는 것이 있습니까? 등록 성공 여부에 관계없이 양식을 표시해야하는 오류 처리 코드가 있지만 공백으로 만 표시됩니다.

<html> 
<head> 
    <title>Registration</title> 
    <link rel="stylesheet" href="css/style.css" /> 
</head> 

<body> 

    <?php 

    require('db.php'); 

    if (isset($_REQUEST['username'])) // If form submitted, insert values into the database. 
    { 

     $username = stripslashes($_REQUEST['username']); // removes backslashes 
     $username = mysqli_real_escape_string($con,$username); //escapes special characters in a string 

     $email = stripslashes($_REQUEST['email']); 
     $email = mysqli_real_escape_string($con,$email); 

     $password = stripslashes($_REQUEST['password']); 
     $password = mysqli_real_escape_string($con,$password); 

     $query = "INSERT INTO users (username, password, email) VALUES ('$username', '".md5($password)."', '$email')"; 

     $result = mysqli_query($con,$query); 

     echo $result; 

     if($result) { 
      echo "<div class='form'><h3>You are registered successfully.</h3><br>Click here to <a href='login.php'>Login</a></div>"; 
     } 
    } else { 

    ?> 
     <div class="form"> 
      <h1>Registration</h1> 
      <form name="registration" action="" method="post"> 
       <input type="text" name="username" placeholder="Username" required /> 
       <input type="email" name="email" placeholder="Email" required /> 
       <input type="password" name="password" placeholder="Password" required /> 
       <input type="submit" name="submit" value="Register" /> 
      </form> 
     </div> 
    <?php } ?> 

</body> 
RiggsFolly 나에게 주어진 몇 가지 오류보고에

+1

가) 문자열 이스케이프는 완전히 SQL 인젝션으로부터 당신을 보호하지 않습니다 - ** 매개 변수가있는 문을 사용 ** B)를 사용하여 'password_hash()'와'password_verify()'사용 c)'var_dump ($ result)'시도 -'echo'는 아무것도 출력하지 않는다. false –

+0

'ini_set ('display_errors', 1)을 추가하십시오. ini_set ('log_errors', 1); error_reporting (E_ALL); mysqli_report (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);'를 스크립트 상단에 추가하십시오. 이것에 의해, mysqli_의 모든 에러가 강제적으로 무시되어 버리거나 무시할 수없는 Exception을 생성한다 ( ). – RiggsFolly

+0

이것은 문자 그대로 이런 식으로 일하는 첫 번째 모습입니다. 베스트 프랙티스를 적용하기 전에 보안되지 않은 버전을 사용하기를 원했습니다. 그러나, 나는 심지어 그것을 얻으려고 고투하고있다. – LegendEater

답변

0

덕분에, 나는 이메일 주소에 대한 열 이름이 잘못된 것을 볼 수 있었다. 이 문제를 해결하여 내 문제를 해결했습니다.

핸디 팁. 고맙습니다.

0

잘못되었습니다.

if (isset($_REQUEST['username'])) 

당신은 양식을 제출하고 REQUEST 변수에 양식의 이름이 있어야합니다. 대신 동안

이 있어야한다 이렇게

if (isset($_REQUEST['registration'])) 

또는

if (isset($_POST['submit'])) 
{ 
    $username = stripslashes($_POST['username']); 

    $email = stripslashes($_POST['email']); 

    $password = stripslashes($_POST['password']); 
+0

그것은 내 방식에도 적용됩니다. 당신의 편익이 있습니까? – LegendEater

+0

예 실제로 어떤 형태로 제출했는지'isset ($ _ POST [ 'submit'])'이라고 말할 수 있습니다! 양식이 제대로 제출되었는지 확인합니다. –