2013-10-07 2 views
1

Ok, ошибки исправляются, но теперь он получает меня в ту страницу, когда я Войти ...я не могу понять эти ошибки из

Я сделать магазин с виртуальными деньгами. Я использую 000webhost для его размещения. Но когда я пытаюсь запустить его, он дает мне эти ошибки:

Warning: session_register() [function.session-register]: Cannot send session cache limiter  - headers already sent (output started at /home/a7020156/public_html/checklogin.php:2) in  /home/a7020156/public_html/checklogin.php on line 41 
Warning: Cannot modify header information - headers already sent by (output started at /home/a7020156/public_html/checklogin.php:2) in /home/a7020156/public_html/checklogin.php on line 47 

Мой код страницы, что дает мне ошибки: (Детали удалены)

<?php 
ob_end_flush(); 
define('DEBUG', TRUE); 

ob_start(); 
$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name=""; // Database name 
$tbl_name=""; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$nav = $_GET['nav_to']; 
$nav_to = (string)$nav; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$mypass = md5($mypassword); 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypass'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 

    // Register $myusername, $mypass and redirect to file "login_success.php" 
    $sql="SELECT credits FROM $tbl_name WHERE username='$myusername' and password='$mypass'"; 
    $creds=mysql_query($sql); 
    $row = mysql_fetch_row($creds); 
    session_register("myusername"); 
    session_register("mypass"); 
    if(!empty($nav_to)){ 
     header("location:$nav_to"); 
    } 
    if(empty($nav_to)){ 
     header("location:login_success.php?name=$myusername"); 
     setcookie("valid", "true", time()+3600); 
     setcookie("creds", "$row[0]", time()+3600); 
    } 

}else { 
    echo "Wrong Username or Password"; 
    echo "<p><a href='main_login.php'>Back</a></p>"; 
} 
?> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="style.css"> 
    </head> 
    <body> 
    </body> 
</html> 

Page, который используется для логин:

<html> 
    <head> 
     <title>Please login</title> 
     <link rel="stylesheet" type="text/css" href="style.css"> 
    </head> 
    <body> 
     <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
      <tr> 
       <form name="form1" method="post" action="checklogin.php" style="color:#B3B3B3;"> 
        <td> 
         <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
          <tr> 
          <td colspan="3"><strong>Member Login </strong></td> 
          </tr> 
          <tr> 
           <td width="78">Username</td> 
           <td width="6">:</td> 
           <td width="294"><input name="myusername" type="text" class="field" id="myusername"></td> 
          </tr> 
          <tr> 
           <td>Password</td> 
           <td>:</td> 
           <td><input name="mypassword" type="password" class="field" id="mypassword"></td> 
          </tr> 
          <tr> 
           <td><a href="insert.php">Register</a></td> 
           <td><input type="submit" name="Submit" class="but" value="Login"></td> 
           <td><a href="contact.php">Forgot pass?</a></td> 
          </tr> 
         </table> 
        </td> 
       </form> 
      </tr> 
      </table> 
    </body> 
</html> 

Я пытаюсь перейти к shop.php

Что я делаю неправильно? адресс для этого http://mackscript.netii.net Спасибо заранее // Mackan90096

+0

'ob_end_flush();' возвращает истину в случае успеха. Попробуйте 'var_dump' на нем – vikingmaster

+0

Вы уверены, что это все, до того, как будет напечатан ЛЮБОЙ HTML? И я думаю, вам нужно удалить пробелы перед ' MackieeE

+0

. Теперь он больше не дает мне ошибок, но он заставляет меня login_success.php вместо shop.php – Mackan90096

ответ

3

вы не можете начать сеанс, если вы нажимали ничего к выходу.

удалить эту строку:

ob_end_flush(); 
+0

Это сработало. Но это приводит меня к неправильной странице. – Mackan90096

+0

кроме того, 'setcookie' не будет выполнять причину' header (location) 'перенаправил браузер на другую страницу. –

+0

@ Mackan90096, тогда вы должны принять ответ и задать другой вопрос. –

Смежные вопросы