2014-01-10 6 views
0

내 웹 페이지에 대한 로그인 시스템을 만들었습니다. localhost에서 내 사용자 이름과 암호를 입력하고 클릭하여 로그인하면 작동합니다. 라이브 사이트에서 할 때 아무 일도 일어나지 않습니다. 여기로그인 시스템이 웹 페이지에 로그온하지 않으려 고합니다.

<?php 

if(isset($_POST['username']) && isset($_POST['password'])){ 

$password=$_POST['password']; 
$username=$_POST['username']; 
$password_hash=md5($password); 

if(!empty($username) && !empty($password)){ 
$query= "SELECT id FROM studenti WHERE username='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password_hash)."'"; 
if($query_run=mysql_query($query)){ 
$query_num = mysql_num_rows($query_run); 

if($query_num==0){ 

echo '<div class="text1">Pogresan Username/Password</div>'; 

}else if ($query_num==1){ 

$user_id=mysql_result($query_run,0, 'id'); 
$_SESSION['user_id']=$user_id; 
header('Location : index.php'); 

} 
} 
}else{ 
echo '<div class="text2">Morate upisati Username i Password</div>'; 

} 
} 

?> 

당신이 그것을 EXAMPLE Registraion이 작품을 좋아 시도 할 수 있습니다, 모든 사용자는 datebase에서 비밀번호 필드 (35) 긴 문자 .. (MD5)이며, datebase에 있습니다

여기 내 코드입니다.

다음
<?php 
require 'core.php'; 
require 'connectdb.php'; 

if(!loggedin()){ 

if(
    isset($_POST['password']) && isset($_POST['password_again'])&& isset($_POST['username'])&& isset($_POST['ime'])&& isset($_POST['prezime'])){ 

$password=$_POST['password']; 
$password_again=$_POST['password_again']; 
$username=$_POST['username']; 
$ime=$_POST['ime']; 
$prezime=$_POST['prezime']; 
$password_hash=md5($password); 

if(!empty($password) && !empty($password_again)&& !empty($username)&& !empty($ime)&& !empty($prezime)){ 

if($password!=$password_again){ 

echo '<div class="text2">Passwordi se ne poklapaju :)</div>'; 

}else{ 

$query="SELECT username FROM studenti WHERE username='$username'"; 
$query_run = mysql_query($query); 

if(mysql_num_rows($query_run)==1){ 

echo '<div class="text2">Korisnicko ime'.' '.$username.' '.'vec postoji</div>'; 
}else{ 
$query="INSERT INTO studenti VALUES ('','".mysql_real_escape_string($username)."','".mysql_real_escape_string($password_hash)."','".mysql_real_escape_string($ime)."','".mysql_real_escape_string($prezime)."')"; 
if($query_run=mysql_query($query)){ 

header('Location: uspjeh.php'); 

}else{ 
    echo '<div class="text2">Dogodila se greska, probaj kasnije!</div>'; 
} 
} 
} 
}else{ 

    echo '<div class="text4">Popuni sva polja</div>'; 
} 
} 
    ?> 

그래서 내가 할 필요가 없습니다 pastebin 내 서버를 사용 PHP 버전 5.3.26 내 모든 코드 : 문제가 어디이 등록 코드

..이 표시되지 않습니다 mysqli_connect();를 사용하십시오.

+1

암호 해시에는 MD5를 사용하지 마십시오. 그것은 부서지고 불안정하다. –

+1

문제를 해결하기 위해 수행 한 작업은 무엇입니까? 여기에는 디버깅을 충분히하지 못했다고 생각하는 많은 코드가 있습니다. –

+1

[session_start()] (http://www.php.net/manual/en/functionsession-start.php)는 어디에 있습니까? –

답변

0

첫 번째 파일 (require/include)에 connectdb.php가 누락되었습니다! 어쩌면 당신은 데이터베이스 연결이 없습니다.

$_SESSION[] 변수를 사용하는 각 파일의 시작 부분에 session_start()을 설정해야합니다.

mysql이 더 이상 사용되지 않으며 최신 버전의 PHP에서 제거되므로 mysqli 또는 PDO으로 전환해야합니다.

mysql_real_escape_string()을 사용하면 기본 보안 만 사용할 수 있습니다. prepared statements (mysqli)/prepared statements (PDO)을 살펴보십시오.

그리고 "SELECT"를 포함하여 모든 쿼리에서 값을 이스케이프 처리해야합니다. (예 : $username)

+0

좋아, 여기 내 모든 코드입니다 .. 제발 .. http://pastebin.com/R7tyvCXZ 모든 작품 .. 그냥 .. 그 문제는 매우 wirde .. – Smack

관련 문제