2014-04-24 3 views
0

나는 웹 페이지라는 숙제를하고 있습니다. 사용자 이름 입력, 비밀번호 입력 및 로그인 버튼이있는 로그인 페이지로 색인 페이지를 만들었습니다.PHP 로그인 후 다음 페이지로 이동

버튼을 클릭하면 PHP 코드 (아래에 설명되어 있습니다)가 실행되었습니다. 로그인을 위해 MySQL을 사용합니다.

로그인 문제로 리디렉션이 발생했습니다. 입력 한 사용자 이름과 암호가 괜찮 으면 페이지는 다음 페이지로 이동해야합니다 (예 : 다음 페이지의 링크는 http://stackoverflow.com입니다). 내가 header("location: http://stackoverflow.com ");를 사용

다음 페이지로 이동합니다,하지만 다음과 같은 오류 가지고 : 이미 ob_end_flush()ob_start() 시도했습니다 Warning: Cannot modify header information - headers already sent by (output started at /users/kzr/www/index.php:60) in /users/kzr/www/index.php on line 14

을하지만, 상황을 변경하지 않았다 오류가 동일 .

아무도 나를이 코드 작업에 도움이 될 수 있습니까?

참고 : PHP 코드와 HTML 코드는 한 번에 하나의 파일에 있지만 분리되었습니다.

PHP 코드 : HTML 코드

if(isset($_POST["login"])){ 
    $username=$_POST["username"]; 
    $password=$_POST["password"]; 
    $connect=mysql_connect("127.0.0.1","kzr_zetr","350adagsertesborda"); 
    if($connect){ 
     $db=mysql_select_db("kzr_zetr"); 
     if($db){ 
      $query=mysql_query("SELECT * FROM login WHERE username = '$username' AND password = '$password'"); 
      $rowcount=mysql_num_rows($query); 
      if($rowcount>0){ 
       $uri="http://kzr.bplaced.de/session/?username=".$username; 
       header('Location:'.$uri); 
       print 'sucess'; 
      }else{ 
       echo "<script type='text/javascript'>login_f_val_phperr();</script>"; 
       print 'fail'; 
      } 
     } 
    } 
} 

:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Bejelentkezés | ZETR</title> 
    <meta charset="utf-8" /> 
    <meta name="author" content="Kókai Z. Ronald" /> 
    <meta name="contact" content="[email protected]" /> 
    <meta name="description" content="(Konrad) Zuse Elektronikus Tanulmányi Rendszer" /> 
    <meta name="keywords" content="konrad, zuse, konrad zuse, etr, rendszer, tanulmányi rendszer" /> 
    <meta name="subject" content="Alkalmazott Informatika Házi Feladat Varga István Tanár Úrnak" /> 
    <base href="http://kzr.bplaced.de" /> 
    <link rel="stylesheet" type="text/css" href="/f/font/ubuntu/ubuntu.css" /> 
    <link rel="stylesheet" type="text/css" href="/f/css/zetr.css" /> 
    <link rel="stylesheet" type="text/css" href="/f/css/login.css" /> 
    <link rel="shortcut icon" type="image/x-icon" href="/f/img/favicon.ico" /> 
    <script type="text/javascript" src="/f/script/login-f.js"></script> 
</head> 
<body> 
<div id="container"> 
    <h1>Zuse</h1> 
    <h2>Elektronikus Tanulmányi Rendszer</h2> 
    <div id="loginbox"> 
     <form name="login-f" action="" onsubmit="return login_f_val()" method="post"> 
      <input type="text" name="username" id="username" placeholder="Felhasználónév" autocomplete="off" /> 
      <input type="password" name="password" id="password" placeholder="Jelszó" /> 
      <input type="submit" name="login" id="login" value="Bejelentkezés" /> 
     </form> 
    </div> 
</div> 
</body> 
</html> 
+2

1. 코드가 SQL 삽입에 매우 취약합니다. 'admin '-을 사용자 이름으로 사용해보십시오. 갑작스런 암호를 몰라도 관리자 (또는 다른 사용자)로 로그인했습니다. 2. mysql_을 사용하지 마십시오. 그들은 오랫동안 사용되지 않았습니다. 준비된 문과 바인드 변수를 사용하여 PDO 또는 MySQLi를 사용하십시오. 3. 데이터베이스에 일반 텍스트 암호를 사용하지 마십시오. 대신에'password_hash'를 사용하십시오 (do ** ** md5()도 사용하지 마십시오) – h2ooooooo

+2

** 왜 당신은 Google 친구가 될 수 없습니까 ?? 동일한 오류에 대한 솔루션 100 개가 있습니다.>> http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php** – NoobEditor

답변

0

index.php의 온라인 60은 이미 헤더가 전송되고 있음을 의미합니다. headers() 호출이 HTML (또는 일반 텍스트) 출력을 보내기 전에 수행해야하는 첫 번째 작업인지 확인하십시오.

1

시도는 다음과 같이 헤더 후 출구를 넣어 :

header(...);exit;

+2

이것이 해결책이라고 확신합니까? ?? 오류는'header' 전에 데이터를 출력하기 때문에 발생합니다 .. 일단'header'가 보내지면, 어떤 해킹 방법으로'header' 함수를 사용하지 않으면 컨트롤은'exit'로 가지 않습니다 !! – NoobEditor

+0

오류는'print'에서옵니다. 그래서 2 가지 해결책 : header(); exit; 또는 인쇄를 삭제하십시오. – DOZ

0

헤더해야 (심지어 doctype 이전에) 어떤 HTML보다 위이고 모든 HTML을 반향하기 전에. 가능한 한 높은 수준으로해야합니다. 그리고 PRINT 성공을 제거하고 실패하십시오.

관련 문제