Problema al conectar admin login en sitio web con PHP

  • Autor Autor MAF
  • Fecha de inicio Fecha de inicio
M

MAF

Épsilon
Redactor
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Hola, estoy siguiendo un "cursillo" de creación de un sitio web con php y mysql. Yo de php se muy poco y la ventaja de ese mini cursillo es que se hace todo mediante Dreamweaver que te hace casi todo el.

Pues bien, he llegado a un paso donde no da mucha información y pide que cree un formulario de login para conectar como administrador a un panel con restricciones. El problema surge cuando al entrar en mi localhost (admin/login.php) me aparece un error el siguiente error:

PHP:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent in C:\xampp\htdocs\ejercicio\admin\login.php on line 0

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\ejercicio\admin\login.php:0) in C:\xampp\htdocs\ejercicio\admin\login.php on line 0

Y al intentar conectarme mediante el login me aparece este otro error:

PHP:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\ejercicio\admin\login.php:0) in C:\xampp\htdocs\ejercicio\admin\login.php on line 0

Podrían decirme a que se debe o como puedo solucionarlo?

Saludos y gracias!

Mejor aún, os dejo el código entero que será más fácil saber a que se debe:

PHP:
<?php virtual('/ejercicio/Connections/mafito.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['usuario'])) {
  $loginUsername=$_POST['usuario'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "nivel";
  $MM_redirectLoginSuccess = "/ejercicio/index.php";
  $MM_redirectLoginFailed = "login.php?error=1";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_mafito, $mafito);
  	
  $LoginRS__query=sprintf("SELECT usuario, password, nivel FROM administradores WHERE usuario='%s' AND password='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 
   
  $LoginRS = mysql_query($LoginRS__query, $mafito) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'nivel');
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login</title>
</head>

<body>
<form id="login" name="login" method="POST" action="<?php echo $loginFormAction; ?>">
  usuario
  <input type="text" name="usuario" />
  <br />
  password
  <input type="password" name="password" />
  <br />
  <input name="Conectar" type="submit" value="submit" />
</form>
</body>
</html>
 
El problema es que estas enviando datos antes de la session. Tendrias que cambiar de lugar esto:

PHP:
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}?>
<?php virtual('/ejercicio/Connections/mafito.php'); ?>

De esta forma. Ya que lo mas seguro es que ese archivo este enviando datos.
 
Mucha gracias!

Ahora ya no me aparecen los errores que comentaba, pero al loguear me aparece lo siguiente:

PHP:
Warning: mysql_select_db() expects parameter 2 to be resource, null given in C:\xampp\htdocs\ejercicio\admin\login.php on line 19

Warning: mysql_query() expects parameter 2 to be resource, null given in C:\xampp\htdocs\ejercicio\admin\login.php on line 24

Suponía que fuese por que estaba mal puesta la base de datos pero he comprobado que el archivo mafito.php al que hace referencia y que es quien se conecta a la base de datos tiene todos los datos bien puestos.

Aun así dejo el codigo del archivo mafito.php

PHP:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_mafito = "localhost";
$database_mafito = "ejercicio";
$username_mafito = "root";
$password_mafito = "";
$mafito = mysql_pconnect($hostname_mafito, $username_mafito, $password_mafito) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

Saludos y gracias una vez mas
 
Última edición:
1. La base de datos "ejercicio" existe? (osea esta creada)
2. Al ya darte error anterior te dara error nuevamente en la linea 24.
Yo uso esto:
PHP:
<?php
	$dbhost = "localhost";
	$dbuser = "usuario";
	$dbpass = "pass";
	$dbname = "base_de_datos";

	$dbh = mysql_connect($dbhost,$dbuser, $dbpass);
	mysql_select_db("$dbname") or die ("No se conecto");

	$SQL = @mysql_query("SELECT * FROM tabla WHERE dato='dato'"); //Ejemplo
	$ROW = @mysql_fetch_array($SQL);
?>

Como ves podes pasarle el parametro de que bd esta leyendo como tmb podes obviarlo. Fijate lo de la BD y dime.
 
Sí, está creada y aun que use tu código me da el mismo error.
 
hace esto vamos a hacer prueba y error...
pone:
PHP:
die($LoginRS__query);
abajo de:
PHP:
$LoginRS__query=sprintf("SELECT usuario, password, nivel FROM administradores WHERE usuario='%s' AND password='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
Luego copia esa consulta SQL y accede al phpmyAdmin y pon esa consulta a ver que error te da, sino te da error es porque es problema del php que no se conecta. Si te da error, informa cual es.
 
Hola,

Al insertar ese codigo debajo del que me has dicho, me da este error al intentar logear:

PHP:
Warning: mysql_select_db() expects parameter 2 to be resource, null given in C:\xampp\htdocs\ejercicio\admin\login.php on line 19
SELECT usuario, password, nivel FROM administradores WHERE usuario='admin' AND password='123456'
 
sisi ya se pero no entendistes bien lo que dice. Te explico mejor. Usa esta consulta:
PHP:
SELECT usuario, password, nivel FROM administradores WHERE usuario='admin' AND password='123456'
en el phpMyAdmin (Enlace eliminado) para ver si te da error o no. Pero de igual manera el error viene al tratar de seleccionar la base de datos.
 
Perdona que tardase en contestar, pero me lo ha arreglado al final un amigo que es programador.

Muchas gracias de todas formas, me has ayudado bastante en realidad 😛
 
En mi opinion es simplemente que le falta el segundo parametro a la funcion que es la conexion,
seria algo asi:

PHP:
$conn = mysql_connect($dbhost,$dbuser, $dbpass);
mysql_select_db($dbname,$conn) or die ("error conneting to database");

Lo pongo por si a alguien le pueda servir 🙂
 
Atrás
Arriba