2013-03-23 1 views
0

여기서 초보자 모드를 유의하십시오. 데이터베이스에서 제품을 검색하는 전자 상거래 사이트를 만들고 있습니다. 내가 사용하는 로그인 정보는 데이터베이스의 0과 1을 기준으로합니다. admin으로 로그인하고 admin.php 페이지에서 검색 기능을 사용하면 로그 아웃되거나 프론트 페이지로 리디렉션됩니다. 동일한 검색 기능이 프론트 페이지에서 올바르게 작동합니다.

여기는 admin.php에서 양식을 제출하는 부분입니다. admin.php 페이지의

<div id="mainArea"> 
    <form id="searchBox" action="<?=$_SERVER['PHP_SELF']?>" method="post"><input id="search" name="title" type="text" placeholder="Search Products" /><input name="submit" type="submit" value="Search" style="width:75px;height:36px"/></form> 
</div> 
    <div id="show"> 
     <?php 
      include("searchAdmin.php"); 
     ?> 
    </div> 

최고 다음과 같습니다

<?php 
if ($_POST['submit']){ 
include ("connection.php"); 

$title = (trim($_POST['title'])=="")? 
die ("You did not enter any search criteria"): 
mysql_real_escape_string($_POST['title']); 

$query = "select * from beer where upper(beer_name) like '%".strtoupper($title) ."%' OR upper(beer_descr) like '%". strtoupper($title) ."%' OR upper(beer_categ) like '%". strtoupper($title) ."%'"; 

if(! ($result = mysql_query($query))) 
die ("No matches found. Please search again.</body></html>"); 
echo "<table border=1>"; 
while ($rows = mysql_fetch_array($result)) { 
    echo "<tr><td rowspan=3>" . '<img src="images/'. $rows['beer_image'] . '.jpg"/>'."</td><td>".$rows['beer_name']."</td><td><a href='updateBeer.php?id=". $rows['beer_id'] ."'>Update</a></td></tr>"; 
    echo "<tr><td>".$rows['beer_categ']."</td><td><a href='deleteBeer.php?id=". $rows['beer_id'] ."'>Delete</a></td></tr>"; 
    echo "<tr><td>".$rows['beer_descr']."</td> 
    <td>".$rows['beer_cost']."</td></tr>"; 
} 
echo "</table>"; 
} 
else include("showAdmin.php"); 
?> 

편집 :

<?php 
session_start(); 
$name = $_SESSION['myusername']; 
?> 

검색 adminSearch.php이를 내 로그인의 끝을 보여 분실 PHP는 이렇게 보입니다. 그것은 관리자 페이지로 나를 보내지 만, 관리자 페이지에서 검색을하면 나를 로그 아웃하거나 프론트 페이지로 보냅니다.

if($count==1){ 
     if($auth==1){ 
      session_start(); 
      $_SESSION['myusername'] = $myusername; 
      $_SESSION['auth']=$auth; 
      header("location: /admin.php"); 
      } 
     elseif($auth==0){ 
      session_start(); 
      $_SESSION['myusername'] = $myusername; 
      $_SESSION['auth']=$auth; 
      header("location: /user.php"); 
     } 
    } 
else { 
echo "Wrong Username or Password"; 
} 
내 로그 아웃이 같은 관리자 페이지에 다음과 같습니다

:

<div id="login1"> 
<font color="white">Logged in with Administrator privilages as: <?php echo $name ?>.</font><br /><form id="logout" method="post" name="logout" action="logout.php"><input name="logout" type="submit" value="Logout" style="width:75px;height:22px"><br /> 
</div>  

그리고 logout.php 읽기 : 눈에서

<?php 
if (!empty($_POST['logout'])){ 
session_start(); 
session_destroy(); 
header("location: /frontPage.php"); 
} 
?> 
+0

첫 번째 변경 if ($ _POST [ 'submit']) {to if (! _ POST [ 'submit'])) {PHP가 아닌 C :-) – sivann

+1

mysql_ * 함수는 다음과 같습니다. deprecated ([red box] (http://php.net/mysql_query) 참조). 그리고 mysql_real_escape_string ($ _ POST [ 'title'])'의 결과를 변수로 선언하지 않습니다. 또한, LIKE 쿼리에서'%'와'_ '를 이스케이프해야합니다. ['addcslashes'] (http://php.net/addcslashes)를 사용하십시오. 그리고 데이터베이스 레코드를 HTML 마크 업으로 출력 할 때 ['htmlspecialchars'] (http://php.net/htmlspecialchars)를 사용해야합니다. –

답변

0

, 당신은 변수 $ 결과를 사용하고있는 문제의 일부일 수 있습니다.

내가 본 것으로부터 $ 결과에 값을 지정하거나 지정하지 않으므로 if 문에서의 비교가 의도 한대로 수행되지 않을 수 있습니다.

제 제안은 디버깅을 위해 if 문을 제거하고 동일한 문제가 발생하는지 확인하여 코드를 간소화하는 것입니다.

또한 코드를 디버그하여 로그 아웃 코드로 리디렉션하는 코드 부분을 식별 할 수있는 경고 상자를 추가하십시오.

<?=$_SERVER['PHP_SELF']?> 

사용

<?php echo $_SERVER['PHP_SELF']?> 

의 장소에서

+0

답변 해 주셔서 감사합니다. 나는 네 제안을했지만 운은 시험하지 않았다. 또한 로그 아웃으로 리디렉션되는 방식을 보거나 이해할 수 없지만 다시 살펴 봐야 할 경우 편집했습니다. 다시로드 할 때 새 세션을 만들 수 있습니까? – anaxin

+1

경고 상자를 사용하여 오류의 원인이되는 로그 아웃 양식을 닫지 못했음을 알았습니다.편리한 팁 주셔서 감사합니다. – anaxin

0

나는이 단순한 실수가 오류의 원인이되는 생각합니다. 이번에는 행운이 함께하게 될 것입니다.