Foros del Web » Programando para Internet » PHP »

sessiones en sistema de login

Estas en el tema de sessiones en sistema de login en el foro de PHP en Foros del Web. Hola compañeros como estan Tengo una tarea el cual consiste en hacer una aplicacion con sistema de login mediante un formulario y que tenga la ...
  #1 (permalink)  
Antiguo 25/06/2013, 20:50
Avatar de randy05  
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 1
sessiones en sistema de login

Hola compañeros como estan

Tengo una tarea el cual consiste en hacer una aplicacion con sistema de login mediante un formulario y que tenga la opcion de facebook conect

ya dispongo de hambos sistema el de login por formulario lo hise con dreamweaver cs6 y el facebook conect lo hise de este tutorial.

http://www.saaraan.com/2012/05/ajax-facebook-connect-with-jquery-php

El problema radica en que las sessiones que hacen hambos sistema no he podido hacer que sean compatibles, me he buelto un lio con eso de las sessiones, me esplico mejor.

lo quiero hacer es que cuando inicie session no importa con cual de los 2 metodos el valla a la base de datos y busque los datos del user que acaba de iniciar session, esto lo hace el login normar, pero el facebook conect no lo hace.

estos son mis archivos de login que hise en dreamweaver.

La bd

CREATE TABLE IF NOT EXISTS `usuarios` (
`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`nombre` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`apellidos` varchar(100) COLLATE latin1_spanish_ci NOT NULL,
`password` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`email` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`fec_d_reg` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`avatar` varchar(100) COLLATE latin1_spanish_ci DEFAULT NULL,
`fb_id` bigint(20) NOT NULL,
`control` enum('admin','user','premium') COLLATE latin1_spanish_ci NOT NULL DEFAULT 'user',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=5 ;

Insertando un user

INSERT INTO `usuarios` (`user_id`, `user_name`, `nombre`, `apellidos`, `password`, `email`, `fec_d_reg`, `avatar`, `fb_id`, `control`) VALUES
(1, 'user', 'Randy', 'Garcia R.', 'e10adc3949ba59abbe56e057f20f883e ', '[email protected]', '2012-05-01 19:56:14', '', 0, 'admin');

La conexion a la bd

loging.php
Código:
<?php
$hostname_conect = "localhost";
$database_conect = "fb";
$username_conect = "randy";
$password_conect = "050189";
$conect = mysql_pconnect($hostname_conect, $username_conect, $password_conect) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
El index
index.php
Código:
<?php 
require_once('Connections/conect.php'); 
require_once('salir.php');
require_once('user.php'); 
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
<style>
body { 
text-align:center; 
}
div{
	margin:0 auto 0 auto;
}
</style>
</head>
<body>
	
    <div>
	<header>
        
		<h1>Sistema de Login</h1>
            
	</header>

	<?php if ($totalRows_usuarios == 0) { ?>
		Inicia Seccion.
        <br>
		<br>
        <form ACTION="login.php" method="POST">
                
			<label><strong>Usuario ID</strong> o <strong>E-mail</strong></label>
						<br>
			<input type="text" name="user" id="user" placeholder="Escribe aqui tu ID." size="26" autofocus required>
						<br>
                        <br>
			<label><strong>Contraseña</strong></label>
                		<br>
			<input type="password" name="pass" id="pass" placeholder="Escribe aqui tu Contrase&ntilde;a." size="26" required>
                    	<br>
				<a href="">La has Olvidado?.</a>
                        <br>
                        <br>
			<button type="submit">Entrar</button>
                 
		</form> 
	<?php } ?>
                                 
	<?php if ($totalRows_usuarios > 0) { ?>

	Hola! <?php echo $row_usuarios['user_name']; ?>
    <br>
    <br>
    <a href="<?php echo $logoutAction ?>" class="salir">Salir.</a>

	<?php } ?>
	</div>            
</body>
</html>
user.php
Código:
<?php

require_once('Connections/conect.php'); 

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

//juego de registro que se encarga de verificar el user que acaba de iniciar seccion
$colname_usuarios = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_usuarios = $_SESSION['MM_Username'];
}
mysql_select_db($database_conect, $conect);
$query_usuarios = sprintf("SELECT * FROM usuarios WHERE user_name = %s", GetSQLValueString($colname_usuarios, "text"));
$usuarios = mysql_query($query_usuarios, $conect) or die(mysql_error());
$row_usuarios = mysql_fetch_assoc($usuarios);
$totalRows_usuarios = mysql_num_rows($usuarios);

?>
login.php
Código:
<?php 
require_once('Connections/conect.php'); 
require_once('salir.php');
require_once('user.php'); 
?>

<?php

//Sistema de logueo///////////////////////////////
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}
//compruevo si se ha iniciado sesion.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
//si el campo * nombre * o * user * son rellenados en el formulario de login y enviados por POST que haga estas 2 comprobaciones.
if (isset($_POST['user'])) {
	
		$loginUsername=$_POST['user'];
		$password=md5($_POST['pass']);
		
	//todo lo demas se queda igual.	
  $MM_fldUserAuthorization = "control";//este determina a que grupo pertenece el user que acaba de iniciar seccion. eje: admin
  $MM_redirectLoginSuccess = "";
  $MM_redirectLoginFailed = "error.php";//si algun campo contiene errores entonces te manda a esta pagina
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_conect, $conect);
  	
   $LoginRS__query=sprintf("SELECT user_name, email, password, control FROM usuarios WHERE (user_name =%s or email=%s) AND password=%s",//en el select los campos que estan entre los parentesis son los campos que el php va a buscar para hacer la autentificacion.
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
  
   //si quisieras agregar mas campos para que compruebe, solo lo pones dentro del parentecis y le agregas,  or  , y despues de, GetSQLValueString($loginUsername, "text") agregas eso mismo.
   
  $LoginRS = mysql_query($LoginRS__query, $conect) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'control');
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //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: " . getenv('HTTP_REFERER') );;// esto es para que cuando rellenes el formulario de entrada dicho formulario va a (loginh.php), que es esta pagina para comprobar los datos si los 													//datos son corecto el te redireciona a la pagina donde isiste el loging.
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );// si los datos son erroeos te redirecciona a error.php
  }
}
?>
salir.php
Código:
<?php
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
	
  $logoutGoTo = "index.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>
error.php
Código:
<?php 
require_once('Connections/conect.php'); 
require_once('salir.php');
require_once('user.php'); 
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
<style>
body { 
text-align:center; 
}
div{
	margin:0 auto 0 auto;
}
</style>
</head>
<body>
	
    <div>
	<header>
        
		<h1>Sistema de Login</h1>
            
	</header>

	<?php if ($totalRows_usuarios == 0) { ?>
    
		<h3 >Usuario o contrase&ntilde;a son incorrecto</h3>
						    
        	<br>
	Por favor, <a href="javascript:history.back(1)">Intentalo Nuevamente.</a>
	<?php } ?>
                                 
	<?php if ($totalRows_usuarios > 0) { ?>

	Hola! <?php echo $row_usuarios['user_name']; ?>
    <br>
    <br>
    <a href="<?php echo $logoutAction ?>" class="salir">Salir.</a>

	<?php } ?>
	</div>            
</body>
</html>
El codigo del facebook conect no los pongo por que son los mismo del tutorial de arriba pero si los nesesitan los pongo.
  #2 (permalink)  
Antiguo 25/06/2013, 21:00
Avatar de randy05  
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: sessiones en sistema de login

aqui les dejo los arhivos de hambos sistema si alguien me puede ayudar ha combinar hambos se lo agradeseria mucho

http://www.mediafire.com/?b6df1voqz9dwmes

nota lla dispongo de la aplicacion (app) en facebook
  #3 (permalink)  
Antiguo 27/06/2013, 08:34
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: sessiones en sistema de login

esto lo hace el login normar, pero el facebook conect no lo hace. necesitas saber cuál es la relación entre tu usuario y el usuario facebbok. Si un usuario XXX hace login via facebook, tienes que saber que XXX en tu base de datos es YYY, y entonces hacer el proceso de login. Consulta la documentación de Facebook SDK.
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: formulario, html, login, mysql, registro, select, sistema, sql, usuarios, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:55.