Comunidad de diseño web y desarrollo en internet online

como utilizar las variables de sesion de php

Citar            
MensajeEscrito el 29 Dic 2010 06:13 am
Hola a todos. nuevamente dando molestias solicitando de su ayuda, sin rodeos les explico mi problema:

tengo un sistema para almacenar contactos telefónicos que ya funciona, pero quiero que sea utilizado solo por usuarios registrados, y cada usuario tenga acceso a sus teléfonos y de nadie mas, me supongo que tengo que implementar una pagina para logearce antes de poder usar el menú, he investigado del tema pero no logro entender como usar esto de las sesiones de php, si fueran tan amables de indicarme como lograr eso. gracias de antemano.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 29 Dic 2010 03:13 pm
Habiendo tanta documentación sobre el tema me parece poco creíble que aún no hayas captado cómo es el asunto. Así que por favor haz una pregunta concreta.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Dic 2010 06:58 pm
usa el buscador luego vuelve a replantear tu duda estos temas se han tratado demasiadas veces jeej y hay ejemplos muy buenos y sencillos , antes de plantear como funciona la variable $_SESSION deberia buscar como en si PHP trata el tema sessiones y como las propaga para q sean persistentes

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Dic 2010 09:12 pm
Muy bien gracias, seguiré investigando y luego procederé a hacer las preguntas concretas, gracias por responder, estaré de regreso ya bien documentado.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 03 Ene 2011 05:06 am
Bueno pues ya estoy de regreso, gracias por no ponerlo todo fácil ya que gracias a eso me puse a investigar y he aprendido bastante, bueno ahora tengo el siguiente problema:

ya tengo mi pagina con registro de usuarios funcionando en loclhost bien, cuando un usuario se registra, se crea automáticamente una nueva tabla en la base de datos para este usuario, y todo esto funciona al 100% en localhost, el problema es que en el host no me crea la tabla ni puedo logearme.

si me pueden echar una mano con esto se los agradecería, les dejo el codigo de los dos archivos que considero mas importantes para este fin.

el que hace la inserción del nuevo usuario y crea la tabla


Código PHP :

<?php 
include ('includes/head.html');
$titulo="registrando";
titulo ($titulo);
?>

<body>
<div id="contenedor">

    <div id="encabezado" style="background-image: url(imagenes/encabezado.jpg)">
    </div>

    <div id="contenido">
        <?
        //si la pass coinciden
            if ($pass != $passrep){
              echo "Los password que introduciste no coinciden. <br />";
              ?>
                <br />
                <br />
                <a href="registrarce.php" style="text-align: center">VOLVER A INTENTARLO</a>
                <br />
                <br />
                <a href="index.html" style="text-align: center">INICIO</a>
              <?
              exit;
            }
            include ('conexion.php');

            $user = stripslashes($_POST["nombre"]);
            $user = strip_tags($user);
            $pass = stripslashes($_POST["pass"]);
            $pass = strip_tags($pass);

            $usuarios=mysql_query("SELECT nombre FROM usuarios WHERE nombre='$user'", $con);
            if($user_ok=mysql_fetch_array($usuarios))
            {
              echo '<br /><br />';
              echo 'El usuario ya esta registrado<br /><br /><br />';
              mysql_free_result($usuarios); //liberamos la memoria del query a la db
            ?>
                <a href="login.php">Registrarce</a><br /><br /><br />
                <a href="index.html">Inicio</a>
            <?
            exit;

            ?>
            <br />
            <br />
            <a href="registrarce.php" style="text-align: center">VOLVER A INTENTARLO</a>
            <br />
            <br />
            <a href="index.html" style="text-align: center">INICIO</a>
            <?
            }

            $insert = mysql_query("insert into usuarios (nombre, pass) values ('$user', password('$pass'))", $con);
            if ($insert){
              echo "Tus datos se han insertado correctamente. <br />";
            }


            if ($insert){
            $creatabla="create table ".$nombre." (numero varchar(16) not null, nombre varchar(40) not null, primary key (numero))";
            $creatablas=mysql_query($creatabla) or die ('no se puede crear la tabla');
            }
            ?>
            <p>Ahora puedes<a href="login.php">Logearte</a> para empecezar a disfurtar de mis respaldos.com </p>
        </div>

    <?
        include ('includes/footer.html');
    ?>
</div>
</body>
</html>



y el que hace el login

Código PHP :

<?
session_start();
if ($userid && $password)
{
// Si el usuario ha intentado hacer log in

  include ('conexion.php');
  $query = "select * from usuarios "
           ."where nombre='$userid' "
           ." and pass=PASSWORD('$password')";
  $result = mysql_query($query, $con);

  if (mysql_num_rows($result) >0 )
  {
    // si están en la base de datos registra la id de usuario
    $usuario = $userid;
    session_register("usuario");
  }
}
include ('includes/head.html');
$titulo="login";
titulo ($titulo);
?>

<body>
<div id="contenedor">

    <div id="encabezado" style="background-image: url(imagenes/encabezado.jpg)">
     </div>

    <div id="contenido">
    <?
        if (session_is_registered("usuario"))
        {
          echo "<br />"; echo "<br />"; echo "<br />";
          echo "Te has registrado como &nbsp;&nbsp;$usuario<br>";
          echo "<br />";echo "<br />"; echo "<br />";
          echo "<a href='inicio.php'>INICIAR</a>";
          echo "<br />"; echo "<br />"; echo "<br />";
          echo "<a href=\"logout.php\">SALIR</a><br>";
          echo "<br />"; echo "<br />"; echo "<br />";
        }
            else
            {
                if (isset($userid))
            {
            // si han intentado hacer login y ha fallado
                echo "No has podido hacer login";
                }
                else
                {
                // si no han intentado hacer login  y no han hecho logged out
                 echo "No has hecho logged in.<br>";
                }

              // provee el formulario para hacer  log in
              echo "<br />";echo "<br />";echo "<br />";echo "<br />";echo "<br />";
              echo "<form method=post action=\"login.php\">";
              echo "<table>";
              echo "<tr><td>Usuario:</td>";
              echo "<td><input type=text name=userid></td></tr>";
              echo "<tr><td>Contrase&ntilde;a:</td>";
              echo "<td><input type=password name=password></td></tr>";
              echo "<tr><td colspan=2 align=center>";
              echo "<br />";
              echo "<input type=submit value=\"iniciar sesion\"></td></tr>";
              echo "</table></form>";
              echo "<br />";echo "<br />";echo "<br />";echo "<br />";echo "<br />";echo "<br />";
        }
    ?>
    </div>

    <?
        include ('includes/footer.html');
    ?>
</div>
</body>
</html>

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 03 Ene 2011 04:11 pm
ok parece que el problema esta en que estas usando variables GLobales y los hosting actuales las llevan deshabilitadas por defecto y por seguridad recuerda en q versiond e PHP trabajas? lo servicdores estan con la 5.2.15 la cual lleva REGISTER_GLOBALS en OFF y en la 5.3 fue retirada el soprote para recuperar las variables de Formularios y la URL estan las Variables $_GET['nombre_de_la_variable'] y $_POST['variable_del_form'] y otras que segun el uso que quieras darle como $_REQUEST $_SERVER y creo q $_FILES son variables especiales y creo que en las versiones de php ya no es necesario hacer esto

Código PHP :

session_is_registered();

fiajte en el manual del sitio oficial de php ahi te dira si son soportadas o no por las versiones y puedes optimizar algo como

Código PHP :

 echo "<br />"; echo "<br />"; echo "<br />"; 
          echo "Te has registrado como &nbsp;&nbsp;$usuario<br>"; 
          echo "<br />";echo "<br />"; echo "<br />"; 
          echo "<a href='inicio.php'>INICIAR</a>"; 
          echo "<br />"; echo "<br />"; echo "<br />"; 
          echo "<a href=\"logout.php\">SALIR</a><br>"; 
          echo "<br />"; echo "<br />"; echo "<br />"; 

por un EOF

Código PHP :

echo   <<<EOF
<br /><br /><br /> 
Te has registrado como &nbsp;&nbsp;$usuario<br />
<br /><br /><br />
<a href='inicio.php'>INICIAR</a>
<br /><br /><br /> 
<a href=\"logout.php\">SALIR</a><br />
<br /><br /><br /> 
EOF;

bueno eso en la parte de programacion ahora en diseño podrias usar CSS y XHTML para una vista elegante

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Ene 2011 12:33 am
gracias por la respuesta, te comento que la versión de mi host es la 5.2.* y en la que estoy trabajando localmente es la 5.2.6 según phpinfo, y en el archivo php.ini local tenia activada la opción REGISTER_GLOBALS y la puse en of pero al parecer no sufrió ningún cambio, todo sigue funcionando igual.

y bueno de que otra forma puedo registrar mi variable de sesión para que me pueda funcionar en el host, por si sirve el dato mi hosting es 000webhost. gracias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 04 Ene 2011 01:09 am
te comento que hice unas pruebas en el servidor para ver cual de las diferentes modos de registrar la sesión es la que funciona en mi servidor con estos codigos:

Código PHP :

p<?hp
session_start();//continuo con la session abierta

// El uso de session_register() es considerado obsoleto
$url = "Esto contiene url";
session_register("url");

// Se prefiere el uso de $_SESSION, a partir de PHP 4.1.0
$_SESSION["uno"] = "Uno es un lindo numero";

// El modo antiguo era usar $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["dos"] = "Dos sigue despues de uno";

header("Location: 2.php");
exit;
?>



y el otro es:

Código PHP :

<?php
session_start();//continuo con la session abierta
session_register('url');
echo "Valor utilizando \session_register: ". $url. "<-";
echo "<BR>";
echo "Valor utilizando \$_SESSION: ". $_SESSION["uno"]. "<-";
echo "<BR>";
echo "Valor utilizando \$HTTP_SESSION_VARS: ". $HTTP_SESSION_VARS["dos"]."<-";
echo "<BR>";
?>


y este es el resultado que me devolvio el servidro

Valor utilizando \session_register: <-
Valor utilizando $_SESSION: Uno es un lindo numero<-
Valor utilizando $HTTP_SESSION_VARS: Dos sigue despues de uno<-

ya utilice los dos métodos que si funcionaron en mi pagina pero nada, que puedo estar haciendo mal?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 04 Ene 2011 04:35 pm
la pusiste en off?
y esta parte te sigue corriendo?

Código PHP :

<? 
session_start(); 
if ($userid && $password) 
{ 

aparte de register global off tienes que poner en tu php ini este valor
error_reporting = E_ALL | E_STRICT
para q te muestre todo los mensajes incluyendo los errores como no declarar una variable y demas luego depuras
a otra cosa en tu sitio de pruebas como estan yendo las sessiones ? por Cookies? o por URL? eso tambien tienes q tomar en cuenta ya q algunos servers llevan por defecto q solo transmitan por alguno de los 2 modos

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Ene 2011 05:38 am
bueno, deja investigo como propaga las variables de sesion este host y luego regreso, y una pregunta en que parte del phpini pongo esto: error_reporting = E_ALL | E_STRICT.

gracias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 05 Ene 2011 02:54 pm
busca en tu host local talvez esta comentado con un punto y coma lo descomentas o simplemente lo pones al principio de tu php.ini ya que es parte del CORE de php

y lo de esta parte me referia a esta en cuestion

Código PHP :

if ($userid && $password)  

osea supuestamente tienes todo ese codigo e otra pagina por lo que no veo las variables como
$_POST['userid'] o un $_GET['userid'] ya que al parecer parecen las mismas ya q me da la impresion de que quieres o estas usando variables globales

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Ene 2011 05:55 pm
si, ciertamente estoy usando variables globales, corregiré esos detalles y luego estaré de regreso.
gracias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.