Error al actualizar PHPAdmin en nuevo servidor, ayuda por favor

  • Autor Autor KAOSNORMAL
  • Fecha de inicio Fecha de inicio
K

KAOSNORMAL

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola que tal ps me cambie de servidor no creo aver movido nada a estos archivos solo lo unico que cambio fue que uso un phpadmin mas actualizado y en mi pagina me da este error que antes no salia

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/cap01/public_html/include/database.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /home/cap01/public_html/include/database.php:20) in /home/cap01/public_html/include/session.php on line 113

Warning: Cannot modify header information - headers already sent by (output started at /home/cap01public_html/include/database.php:20) in /home/cap01/public_html/process.php on line 29

Este es mi archivo del database.php

PHP:
<?php
include("constants.php");
define('TBL_ATTEMPTS','login_attempts');
define('TBL_USERS','users');
define('ATTEMPTS_NUMBER',10);
class MySQLDB
{
   var $connection;         //The MySQL database connection

   function MySQLDB(){
      $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
      mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
   }

   function confirmIPAddress($value) {
	$q = "SELECT attempts, (CASE when lastlogin is not NULL and DATE_ADD(LastLogin, INTERVAL 10 MINUTE)>NOW() then 1 else 0 end) as Denied ".
   " FROM `login_attempts` WHERE ip = '$value'";
 
   $result = mysql_query($q, $this->connection);
   $data = mysql_fetch_array($result);   
 
   //Verify that at least one login attempt is in database

   if (!$data) {
     return 0;
   } 
   if ($data["attempts"] >= ATTEMPTS_NUMBER)
   {
      if($data["Denied"] == 1)
      {
         return 1;
      }
     else
     {
        $this->clearLoginAttempts($value);
        return 0;
     }
   }
   return 0;  
  }
   
   function addLoginAttempt($value) {
   // increase number of attempts
   // set last login attempt time if required    
	  $q = "SELECT * FROM ".TBL_ATTEMPTS." WHERE ip = '$value'"; 
	  $result = mysql_query($q, $this->connection);
	  $data = mysql_fetch_array($result);
	  
	  if($data)
      {
        $attempts = $data["attempts"]+1;

        if($attempts==3) {
		 $q = "UPDATE ".TBL_ATTEMPTS." SET attempts=".$attempts.", lastlogin=NOW() WHERE ip = '$value'";
		 $result = mysql_query($q, $this->connection);
		}
        else {
		 $q = "UPDATE ".TBL_ATTEMPTS." SET attempts=".$attempts." WHERE ip = '$value'";
		 $result = mysql_query($q, $this->connection);
		}
       }
      else {
	   $q = "INSERT INTO ".TBL_ATTEMPTS." (attempts,IP,lastlogin) values (1, '$value', NOW())";
	   $result = mysql_query($q, $this->connection);
	  }
    }
   
   
   function confirmUserPass($username, $password){
      /* Add slashes if necessary (for query) */
      if(!get_magic_quotes_gpc()) {
	      $username = addslashes($username);
      }

      /* Verify that user is in database */
      $q = "SELECT password FROM ".TBL_USERS." WHERE username = '$username'";	
      $result = mysql_query($q, $this->connection);
      if(!$result || (mysql_numrows($result) < 1)){
         return 1; //Indicates username failure
      }

      /* Retrieve password from result, strip slashes */
      $dbarray = mysql_fetch_array($result);
      $dbarray['password'] = stripslashes($dbarray['password']);
      $password = stripslashes($password);

      /* Validate that password is correct */
      if($password == $dbarray['password']){
         return 0; //Success! Username and password confirmed
      }
      else{
         return 1; //Indicates password failure
      }
   }
   
   function confirmUserName($username){
      /* Add slashes if necessary (for query) */
      if(!get_magic_quotes_gpc()) {
	      $username = addslashes($username);
      }

      /* Verify that user is in database */
      $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'";
      $result = mysql_query($q, $this->connection);
      if(!$result || (mysql_numrows($result) < 1)){
         return 1; //Indicates username failure
      } 
	  
	  return 0;

   }
   
   function clearLoginAttempts($value) {
    $q = "UPDATE ".TBL_ATTEMPTS." SET attempts = 0 WHERE ip = '$value'"; 
	return mysql_query($q, $this->connection);
   }
   
   function getUserInfo($username){
      $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'";
      $result = mysql_query($q, $this->connection);
      /* Error occurred, return given name by default */
      if(!$result || (mysql_numrows($result) < 1)){
         return NULL;
      }
      /* Return result array */
      $dbarray = mysql_fetch_array($result);
      return $dbarray;
   }
      
   function displayUsers(){
   $q = "SELECT username,password "
       ."FROM ".TBL_USERS." ORDER BY username";
   $result = mysql_query($q, $this->connection);

   $num_rows = mysql_numrows($result);

   if($num_rows == 0){
      echo "Users table is empty";
      return;
   }

   echo "<p><table align=\"left\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n";
   echo "<tr><td class=\"tableheadprop\">&nbsp;Username&nbsp;</td><td class=\"tableheadprop\">&nbsp;Password&nbsp;</td></tr>\n";
   for($i=0; $i<$num_rows; $i++){
      $uname  = mysql_result($result,$i,"username");
      $upass = mysql_result($result,$i,"password");

      echo "<tr><td class=\"tableprop\">$uname</td><td class=\"tableprop\">$upass</td></tr>\n";
   }
   echo "</table></p><br>\n";
   }
   
   function displayAttempts($value){
   $q = "SELECT ip, attempts,lastlogin "
       ."FROM ".TBL_ATTEMPTS." WHERE ip = '$value' ORDER BY lastlogin";
   $result = mysql_query($q, $this->connection);

   $num_rows = mysql_numrows($result);

   if($num_rows == 0){
      echo "LoginAttempts table is empty";
      return;
   }

   echo "<p><table align=\"left\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n";
   echo "<tr><td class=\"tableheadprop\">&nbsp;Your IP Address&nbsp;</td><td class=\"tableheadprop\">&nbsp;Attempts&nbsp;</td><td class=\"tableheadprop\">&nbsp;LastLogin&nbsp;</td></tr>\n";
   for($i=0; $i<$num_rows; $i++){
      $uip  = mysql_result($result,$i,"ip");
      $uattempt = mysql_result($result,$i,"attempts");
	  $ulogin = mysql_result($result,$i,"lastlogin");
	  

      echo "<tr><td class=\"tableprop\">$uip</td><td class=\"tableprop\">$uattempt</td><td class=\"tableprop\">$ulogin</td></tr>\n";
   }
   echo "</table></p><br>\n";
   }

};

/* Create database connection */
$database = new MySQLDB;

?>


Este es el de session.php

PHP:
<?php
include("database.php");
include("form.php");

class Session
{
   var $username;            //Username given on sign-up
   var $userid;              //Random value generated on current login
   var $userlevel;           //The level to which the user pertains
   var $time;                //Time user was last active (page loaded)
   var $logged_in;           //True if user is logged in, false otherwise
   var $userinfo = array();  //The array holding all user info
   var $url;                 //The page url current being viewed
   var $referrer;            //Last recorded site page viewed
   var $ip;                  //Remote IP address  

   function Session(){
      $this->ip = $_SERVER["REMOTE_ADDR"];
      $this->time = time();
      $this->startSession();
   }

   function startSession(){
      global $database;  
      session_start();   
	  
      /* Determine if user is logged in */
      $this->logged_in = $this->checkLogin();

      /* Set referrer page */
      if(isset($_SESSION['url'])){
         $this->referrer = $_SESSION['url'];
      }else{
         $this->referrer = "/";
      }

      /* Set current url */
      $this->url = $_SESSION['url'] = $_SERVER['PHP_SELF'];
   }

   function checkLogin(){
      global $database; 
      /* Check if user has been remembered */
      if(isset($_COOKIE['cookname'])){
         $this->username = $_SESSION['username'] = $_COOKIE['cookname'];
      }

      if(isset($_SESSION['username'])){
         if($database->confirmUserName($_SESSION['username']) != 0){
            unset($_SESSION['username']);
            return false;
         }

         $this->userinfo  = $database->getUserInfo($_SESSION['username']);
         $this->username  = $this->userinfo['username'];
         return true;
      }
      else{
         return false;
      }
   }

   function login($subuser, $subpass, $subremember){
      global $database, $form;  
		
	  unset($form->errors);
	  /* Checks if this IP address is currently blocked*/	
      $result = $database->confirmIPAddress($this->ip);

      if($result == 1){
         $error_type = "access";
         $form->setError($error_type, "Access denied for ".TIME_PERIOD." minutes");
      } 

	  /* Return if form errors exist */
      if($form->num_errors > 0){
         return false;
      }
	  
	  $error_type = "attempt";

	  /* Username and password error checking */
      if(!$subuser || !$subpass || strlen($subuser = trim($subuser)) == 0){
         $form->setError($error_type, "Username or password not entered");
      }
	  
      if($form->num_errors > 0){
         return false;
      }

      /* Checks that username is in database and password is correct */
      $subuser = stripslashes($subuser);
      $result = $database->confirmUserPass($subuser, $subpass);

      if($result == 1){
         $form->setError($error_type, "Invalid username or password.");
		 $database->addLoginAttempt($this->ip);
      }
	  
      if($form->num_errors > 0){
         return false;
      }

      /* Username and password correct, register session variables */
      $this->userinfo  = $database->getUserInfo($subuser);
      $this->username  = $_SESSION['username'] = $this->userinfo['username'];

      
      /* Null login attempts */
	  $database->clearLoginAttempts($this->ip);

	  if($subremember){
         setcookie("cookname", $this->username, time()+COOKIE_EXPIRE, COOKIE_PATH);
      }

      /* Login completed successfully */
      return true;
   }

   function logout(){
      global $database;  

      if(isset($_COOKIE['cookname'])){
         setcookie("cookname", "", time()-COOKIE_EXPIRE, COOKIE_PATH);
      }

      unset($_SESSION['username']);

      $this->logged_in = false;
      
   }
};


/* Initialize session object */
$session = new Session;

/* Initialize form object */
$form = new Form;

?>

Este el de process.php

PHP:
<?php
include("include/session.php");

class Process
{
   function Process(){
      global $session;

      if(isset($_POST['sublogin'])){
         $this->procLogin();
      }
      else if($session->logged_in){
         $this->procLogout();
      }
      else{
          header("Location: ".$url);
       }
   }


   function procLogin(){
      global $session, $form;
      /* Login attempt */
      $retval = $session->login($_POST['user'], $_POST['pass'], isset($_POST['remember']));
      
      /* Login successful */
      if($retval){
		$url = $_POST['url'];
        header("Location: ".$url);
      }
      /* Login failed */
      else{
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
		$url = $_POST['url'];
         header("Location: ".$url);
      }
   }
   
   function procLogout(){
      global $session;
      $retval = $session->logout();
      header("Location: index.php?loggedout=1");
   }
   

};

$process = new Process;

?>
 
Es porque la query no dió ningún resultado y los otros dos errores es porque se mostró el primer error y luego el script continuó tratando de enviar headers.

Ponle un if de esta forma:

if(!$result = mysql_query($q, $this->connection)){
die('Error');
}

Como no hay resultados $result pasa a ser valor booleano false y por eso te da el primer mensaje de error.
Intenta darle un echo a la query y pegalo en el phpmyadmin y vee que está fallando.
 
A mi me apareció tambien un error parecido al cambiar de servidor.
Las posibles soluciones ya se han dicho y fueron en algunos caso que habia un espacio al principio, y otra es que la consulta no dio ningun resultado pero como era necesaria realizar la consulta para que no apareciera el error le puse "@" delante y listo @mysql_fetch_array()
 
Como menciona zkizzik, el error es por que la consulta no te trae ningun resultado, y los siguientes errores son en consecuencia del primero.

A mi me apareció tambien un error parecido al cambiar de servidor.
Las posibles soluciones ya se han dicho y fueron en algunos caso que habia un espacio al principio, y otra es que la consulta no dio ningun resultado pero como era necesaria realizar la consulta para que no apareciera el error le puse "@" delante y listo @mysql_fetch_array()

No creo que poner @ sea la mejor solución, eso no quita que el error exista, simplemente no lo notificara. Lo mejor sería agregar validaciones como comenta zkizzik.

Saludos
 
Atrás
Arriba