2010-03-28 9 views
0

PHP/MySQL 초보자 질문입니다.PHP/MySQL 데이터베이스 문제

로컬 phpmyadmin으로 가져온 데이터베이스가 있습니다. 그러나 그것은 내 PHP 응용 프로그램에서 액세스 할 수없는 것 같습니다. 연결 문자열이 올바르게 보이고 데이터베이스 정보에 액세스하기 위해 사용자 자격 증명을 인증하려고 할 때 아무런 문제가 없습니다.

그러나 모든 사람을 인증하고 내가 가짜 자격 증명을 넣을 때를 알고 있습니다. 여전히 데이터베이스에서 다른 정보를 가져 오지 않습니다.

예를 들어 사용자가 로그인하면 "Hello username"과 같은 것을보아야합니다. 이 시점에서 나는 사용자 이름없이 "Hello"를 본다. 내가 누락 된 아이디어가 있습니까?

+7

누락 된 한 가지는 질문에 문제의 코드를 게시하는 것입니다. 코드를 보면 동일한 페이지의 모든 사용자가 현재 위치 및 솔루션 해결 방법을 파악할 수 있습니다. –

+1

예, 일부 코드를 보여주십시오. –

+0

코드를 게시하려하지만 OS가 허용하지 않는 이유는 무엇입니까? – queryne

답변

0

ok 모든 앞뒤 사람에게 미안합니다. 여기에 문제가 있습니다. 나는 PHP 애플 리케이션 및 MySQL 데이터베이스에 연결되어있다 (또는 적어도 그렇게 희망 ...). 사용자가 로그인 할 수 있도록 내 페이지의 헤더에 양식이 있습니다. 나는 로그인 할 수 있지만 데이터베이스에서 정보를 가져올 수 없습니다. 가짜 자격 증명을 사용하여 로그인하려고하면 "잘못된 로그인"메시지가 표시됩니다. 그러나 내가 로그인 할 때 해당 자격 증명 이외의 데이터베이스에서 다른 것을 가져올 수 없습니다. 여기에 확인

은 ... 코드의

데이터베이스 연결 :

여기
<?php 
session_start(); 

# FileName="Connection_php_mysql.htm" 
# Type="MYSQL" 
# HTTP="true" 
$hostname_test = "localhost"; 
$database_test = "girlpower"; 
$username_test = "root"; 
$password_test = "password"; 
$test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR); 

mysql_select_db($database_test, $test); 
?> 

는 로그인 코드 'S : 헤더 코드 (이 WHERE IS WHERE

<?php 
require_once("includes/db.php"); 

$userEmail = trim($_POST['userEmail']); 
$password = trim($_POST['password']); 
$userlogin = trim($_POST['userlogin']); 

//print_r($_POST); 

if ($userlogin != "" && $userEmail != "" && password != "" ) 
{ 
    $sql = sprintf("Select * from girlpower where email = '%s' and pwd = '%s'", $userEmail, $password); 

    //echo $sql; 

    $res = mysql_query($sql); 

    if(mysql_num_rows($res) == 0) 
    { 
     //TODO: 
     //redirect.. 

     header("Location: " . $_SERVER['HTTP_REFERER'] . "?fail=1"); 

    } 
    else 
    { 
     $row = mysql_fetch_assoc($res); 
     $_SESSION['recordId'] = $row['recordId']; 
     $_SESSION['firstName'] = $row['firstName']; 

     //echo "success..."; 
     header("Location: " . $_SERVER['HTTP_REFERER']); 

     //print_r($_SERVER); 

    } 

    //print($_SESSION); 

} 
else 
{ 
     header("Location: " . $_SERVER['HTTP_REFERER'] . "?fail=1"); 

} 

는 여기 양식 생명체) :

<?php 

    $fail = false; 
    if($_GET['fail'] != "") 
    { 
     $fail = true; 
    } 


     if($_SESSION['recordId'] != "") 
    { 
     //get the 1st name 
     $firstName = $_SESSION['firstName']; 
    } 

     ?> 

<div id="header"> 
< SHOULD BE LINK "index.php"></a> 

<div id="ulogin"> 
    <fieldset id="userlogin"> 
     <?php if($firstName == ""){ ?> 
     <form name="loginForm" action="dologin.php" method="post" > 
    <label for="logemail">Members Login: &nbsp;Email</label> <input type="text" 
     name="userEmail" id="logemail" size="15" /> 
     <label for="logpwd">Password</label> <input type="password" name="password" 
       id="logpwd" size="15" /> 
       <input type="submit" name="userlogin" id="login" value="Login" /> 

       <?php if ($fail == true) {?> 
       <span class="error">Incorrect Login</span> 
       <?php }?> 

      </form> 
    </fieldset> 

      <?php 
     } 
    else{ 
    ?> 


<div id="welcome">Welcome <?= htmlentities($firstName) ?> | <SHOULD BE LINK ="seemsgs.php?receiver_id="<?= $_SESSION["recordId"]?> > See Messages</> |<SHOULD BE LINK ="member.php">Update Profile</> | <SHOULD BE LINK ="dologout.php">Logout</a> </div><?php }?> 
</div> 
+0

이것이 읽을 수 있는지 알려주세요. OS에 코드를 게시하지 않았습니다. – queryne

+0

이것은 좋은 일이지만, 여기에 게시하는 대신 편집하고 질문에 추가해야합니다 (페이지의 '대답'섹션) –

0

당신이 루트 사용자를 사용하고있는 것으로 나타났습니다. (단지 게시 목적으로 여기에 추가되었는지 확실하지 않지만) 사용중인 호스팅 환경에 따라 문제가 될 수도 있고 아닐 수도 있습니다. 일부 공유 호스트는 MySQL에서 데이터베이스에 대한 사용자를 지정해야합니다.

쿼리가 실행 중이며 최소한의 행을 리턴해야하는 것에서부터. 시도한 print_r 결과 배열에 있습니까? 그렇다면 출력을 게시 할 수 있습니까?

성공적으로 데이터베이스에서 결과를 얻는다면 게시 된 코드에 성공 메시지를 나타내는 조건이 표시되지 않습니다. isset()을 할당 한 $ _SESSION 수퍼 글로벌 키 (recordID와 firstName)와 아직 확인하지 않은 경우 true 메시지를 출력 할 수 있습니다.

그냥 생각해 보았습니다. sprintf를 사용하여 쿼리를 형식화하는 것으로 나타났습니다. 성취하려는 대상에 대해 너무 견고 할 수 있지만 PDO를 사용하여 매개 변수화 된 SQL 쿼리를 얻는 것이 좋은 방법입니다. 가능한 경우 해당 작업을 완료하십시오. Introduction to PHP 5 PDO