Foros del Web » Programando para Internet » PHP »

Problemón formulario php

Estas en el tema de Problemón formulario php en el foro de PHP en Foros del Web. Hola! Soy nuevo en el foro y este es mi primer post. Estoy haciendo una página web y estoy teniendo problemas con el formulario. El ...

  #1 (permalink)  
Antiguo 28/01/2013, 15:17
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Problemón formulario php

Hola! Soy nuevo en el foro y este es mi primer post.
Estoy haciendo una página web y estoy teniendo problemas con el formulario.
El formulario te puede registrar (añade tu nombre y contraseña a la base de datos) o puedes entrar con un usuario y contraseña creados previamente.
Lo segundo es lo que no funciona, se crean usuarios bien, pero no puedes entrar en esas sesiones después. Da este error:

Warning: Cannot use a scalar value as an array in (...) on line 49. Y esa línea es $_SESSION['logged'] = 1;

Este es el código PHP:

<?php

if( $_POST['email'] )
//if( isset($_POST['email']) )
{
include 'inc/conexion.php';

$email = $_POST['email'];
$password = $_POST['password'];
$newpassword = $_POST['newpassword'];

$_SESSION = 1;

if($_POST['password'] && $_POST['email'])
//if(isset($_POST['password']))
{
$query = "SELECT * FROM users WHERE user = '".$_POST['email']."' AND password = '".$_POST['password']."';";
$sql=mysql_query($query);

$_SESSION['logged'] = 1;
}
else if($_POST['newpassword'] && $_POST['email'])
//else if(isset($_POST['newpassword']))
{
$query = "INSERT INTO users ( user, password ) VALUES ( '".$_POST['email']."', '".$_POST['newpassword']."');";
$sql=mysql_query($query);
}
//echo $query;
mysql_close();
}
?>



Y este es el HTML:

<div id="form">

<form method="post" action="sell.php">

<div>
<label>User</label> <br/>
<input type="text" name="email"/><br />
<input type="radio" name="choose" id="login" checked="checked" /> I have an account <br />
<input type="radio" name="choose" id="signup" /> I am new!<br />
</div>

<div id="login_block">
<label>Password</label><br />
<input type="password" name="password" id="password"/><br/>
<input type="image" src="img/login_boton.png" value=" Login "/>
</div>

<div id="signup_block" style="display:none">
<label>Choose password</label><br/>
<input type="password" name="newpassword" id="newpassword" /><br/>
<input type="image" src="img/signup_boton.png" value=" Signup "/>
</div>

</form>


Cualquier ayuda es bien recibida! Gracias.
  #2 (permalink)  
Antiguo 28/01/2013, 15:22
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Bienvenido al foro, revisa esta línea:

Código PHP:
Ver original
  1. $_SESSION = 1;

¿Qué intentas hacer con eso?

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 28/01/2013, 15:24
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Hola, gracias por la rápida respuesta.
Esa línea está ahí porque cuando está loggeado el usuario aparece en el footer un botón de log out, y en el footer tengo esto para que aparezca:

<?php if( $_SESSION['logged'] == 1 ) { ?>
<a href="inc/logout.php" height=120 ><img src="img/logout_boton.png" alt="Logout" /></a>
<?php } ?>
  #4 (permalink)  
Antiguo 28/01/2013, 15:25
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Tienes $_SESSION no $_SESSION['logged'], debes especificar el índice. De ahí viene el error.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 28/01/2013, 15:30
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Intenté eso que me dices, pero si lo hago, aparte de seguir dándome el error en la línea 49, me lo da también de esa otra línea.
  #6 (permalink)  
Antiguo 28/01/2013, 15:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Esta línea está mal:

Código PHP:
Ver original
  1. $_SESSION = 1; //MAL

Debes poner un índice, como lo hiciste con:

Código PHP:
Ver original
  1. $_SESSION['logged'] = 1; //bien

Se entiende?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 28/01/2013, 15:44
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Estoy poniendo

$_SESSION['logged'] = 1;

en las dos líneas pero ahí entonces es cuando me da el error en las dos líneas. Eso me lleva a pensar que probablemente no estoy entendiendo como debería funcionar eso.
  #8 (permalink)  
Antiguo 28/01/2013, 15:44
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: Problemón formulario php

Lee el error,

no puedes usar un valor escalar dentro de un array

$_SESSION es un array y como tal debes meterle un valor como vector

Código PHP:
Ver original
  1. $_SESSION['logged'] = 1; //o true que es lo mismo

cuando cambies eso, seguramente el error cambiará

Última edición por memoadian; 28/01/2013 a las 15:54
  #9 (permalink)  
Antiguo 28/01/2013, 15:49
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Cita:
Iniciado por gunnerdeath92 Ver Mensaje
en las dos líneas pero ahí entonces es cuando me da el error en las dos líneas.
¿Cuál es el error después de cambiar $_SESSION = 1; ?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 28/01/2013, 15:53
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

El mismo error que en la línea 49, el de que no se puede usar un valor escalar en un array.

Sí la línea problemática es entonces la 41 ($_SESSION = 1;) por qué tengo que cambiar la 59 ($_SESSION['logged'] == 1;) ? O al menos eso he entendido que quería decir memoadian.
  #11 (permalink)  
Antiguo 28/01/2013, 15:54
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: Problemón formulario php

perdón se me fue un signo de más de =
  #12 (permalink)  
Antiguo 28/01/2013, 16:02
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Vuelvo y te repito, tienes que cambiar esta línea:

Código PHP:
Ver original
  1. $_SESSION = 1;
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #13 (permalink)  
Antiguo 28/01/2013, 16:05
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Sí, es la que estoy cambiando, pero me da error. Qué debería poner?
Estoy poniendo $_SESSION['logged'] == 1;
  #14 (permalink)  
Antiguo 28/01/2013, 16:06
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

y porqué usas 2 igual ==? se asigna con uno =
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #15 (permalink)  
Antiguo 28/01/2013, 16:08
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Perdón ese se me coló en el último mensaje, estoy usando uno, pero no me funciona igualmente.
  #16 (permalink)  
Antiguo 28/01/2013, 16:09
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

y porqué no te funciona, algún error?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #17 (permalink)  
Antiguo 28/01/2013, 16:10
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Sí, el mismo de antes.

Warning: Cannot use a scalar value as an array in /opt/lampp/htdocs/Mr. Tee/sell.php on line 41

y

Warning: Cannot use a scalar value as an array in /opt/lampp/htdocs/Mr. Tee/sell.php on line 49
  #18 (permalink)  
Antiguo 28/01/2013, 16:13
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

En inc/conexion.php tienes algún otro $_SESSION = 1?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #19 (permalink)  
Antiguo 28/01/2013, 16:15
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Sí, probé a ponerlo en header.php pero tampoco funciona.
  #20 (permalink)  
Antiguo 28/01/2013, 16:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

En tu código debes tener algún otro $_SESSION = 1, debes buscarlo para que no te salgan errores en las demás líneas.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #21 (permalink)  
Antiguo 28/01/2013, 16:18
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: Problemón formulario php

Hola gunnerdeath92, disculpa una pregunta, alomejor ya lo pusiste, pero no lo veo, iniciaste una sesion al inicio con
Código PHP:
Ver original 
??
  #22 (permalink)  
Antiguo 28/01/2013, 16:22
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Muchas gracias! pensaba que lo tenía en otro archivo pero no, lo he añadido en el php después del include de conexion.php y funciona.
El problema es que ahora sí inicia sesión pero al cambiar de página (por ejemplo volver a la home) es como si hubieras hecho log out, no guarda la sesión, alguna idea de por qué eso pasa?
Muchas gracias por la ayuda!
  #23 (permalink)  
Antiguo 28/01/2013, 16:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Problemón formulario php

Todas las páginas deben llevar session_start()... Más información del error a la próxima, que no somos adivinos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #24 (permalink)  
Antiguo 28/01/2013, 16:40
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: Problemón formulario php

Cita:
Iniciado por gunnerdeath92 Ver Mensaje
Muchas gracias! pensaba que lo tenía en otro archivo pero no, lo he añadido en el php después del include de conexion.php y funciona.
El problema es que ahora sí inicia sesión pero al cambiar de página (por ejemplo volver a la home) es como si hubieras hecho log out, no guarda la sesión, alguna idea de por qué eso pasa?
Muchas gracias por la ayuda!
Hola amigo, en todas las paginas donde vayas a hacer uso de alguna variable de sesion tienes que incluir al inicio, de preferencia antes de todo el
Código PHP:
Ver original 

Saludos!
  #25 (permalink)  
Antiguo 28/01/2013, 16:52
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Muchas gracias art_rocked, me has solucionado un problema que no sabía ni por dónde cogerlo!
Lo siento andresdzphp, soy nuevo en esto del php y la verdad es que a veces me hago un poco de lío. Gracias a los dos!
  #26 (permalink)  
Antiguo 29/01/2013, 09:17
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: Problemón formulario php

Cita:
Iniciado por gunnerdeath92 Ver Mensaje
Muchas gracias art_rocked, me has solucionado un problema que no sabía ni por dónde cogerlo!
Lo siento andresdzphp, soy nuevo en esto del php y la verdad es que a veces me hago un poco de lío. Gracias a los dos!
No te preocupes amigo! para eso estamos, yo tambien soy newbee y hay cosas básicas que se me pasan ya que aprendo sobre la marcha conforme me van pidiendo requermientos. Pero este foro me ha ayudado mucho, gracias a toda la comunidad buena onda.
  #27 (permalink)  
Antiguo 29/01/2013, 10:17
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Me volvió a salir el mismo error... ahroa no inserta usuarios nuevos en base de datos :S

Este es mi código PHP, no veo nada raro y me estoy rompiendo la cabeza intentando saber qué es!

Código PHP:
Ver original
  1. <?php
  2.                                 session_start();
  3.                        
  4.                                 //if( $_POST['email'] )
  5.                                 if( isset($_POST['email']) )
  6.                                 {
  7.                                         include 'inc/conexion.php';
  8.                                        
  9.                                         $email = $_POST['email'];
  10.                                         $password = $_POST['password'];
  11.                                         $newpassword = $_POST['newpassword'];
  12.                                        
  13.                                         $_SESSION['logged'] = 1;
  14.                                        
  15.                                         //if($_POST['password'] && $_POST['email'])
  16.                                         if(isset($_POST['password']))
  17.                                         {
  18.                                                 $query = "SELECT * FROM users WHERE email = '".$_POST['email']."' AND password = '".$_POST['password']."';";
  19.                                                 $sql=mysql_query($query);
  20.                                                
  21.                                                 $_SESSION['logged'] = 1;
  22.                                         }
  23.                                         //else if($_POST['newpassword'] && $_POST['email'])
  24.                                         else if(isset($_POST['newpassword']))
  25.                                         {
  26.                                                 $query = "INSERT INTO users ( email, password ) VALUES ( '".$_POST['email']."', '".$_POST['newpassword']."');";
  27.                                                 $sql=mysql_query($query);
  28.                                         }
  29.                                         //echo $query;
  30.                                         mysql_close();
  31.                                 }
  32.                         ?>
  #28 (permalink)  
Antiguo 29/01/2013, 10:57
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problemón formulario php

Buenas,

En tu codigo no entiendo una cosa que haces, segun tu formulario que posteastes al inicio

tu tienes dos radioBotton que deciden si te vas a logearte o crear un nuevo usuario, no?

Prueba este codigo ajustado a tu formulario, debes tener en cuenta varios aspectos de seguridad, que no contemplastes 'utilizar algun algortimos de encriptacion para guardar la contraseña del usuario en la BD'

Código PHP:
<?php
 session_start
();                        
                            
if( isset(
$_POST['email']) )
{
    
require_once 
'inc/conexion.php';
                                        
$email $_POST['email'];
$password $_POST['password'];
//$newpassword = $_POST['newpassword'];                                        

if ($_POST['choose'] == 'login'
{
    
$query "SELECT * FROM users WHERE email = '".$_POST['email']."' AND password = '".$_POST['password']."';";
    
$result =mysql_query($query);                                                
    if (
mysql_num_rows($result) > 0)
       
$_SESSION['logged'] = 1;
       else
      echo 
'Usuario y/o Password Incorrecto';
      
}
else                                    
if(
$_POST['choose'] == 'signup')
{
    if(isset(
$_POST['password']) && !empty($_POST['password']) && isset($_POST['newpassword']) && !empty($_POST['newpassword']))
    {
        
$query "INSERT INTO users ( email, password ) VALUES ( '".$_POST['email']."', '".$_POST['newpassword']."');";
      
$result mysql_query($query);
      if (
$result)
        echo 
'Usuario Insertado';
         else
       echo 
'Error al Insertar Usuario';
        
    }
    else
    echo 
'Los Password\'s deben coincidir y no puede esta vacíos.';
}

                                        
//echo $query;
mysql_close();
}
else
echo 
'Debe insertar el Email';
                 

?>

<form method="post" action="sell.php">

<div>
<label>User</label> <br/>
<input type="text" name="email"/><br />
<input type="radio" name="choose" id="login" checked="checked" value="login" /> I have an account <br />
<input type="radio" name="choose" id="signup" value="signup"/> I am new!<br />
</div>

<div id="login_block">
<label>Password</label><br />
<input type="password" name="password" id="password"/><br/>
<input type="image" src="img/login_boton.png" value=" Login "/>
</div>

<div id="signup_block" style="display:none">
<label>Choose password</label><br/>
<input type="password" name="newpassword" id="newpassword" /><br/>
<input type="image" src="img/signup_boton.png" value=" Signup "/>
</div>

</form>


Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #29 (permalink)  
Antiguo 29/01/2013, 11:21
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Problemón formulario php

Gracias por la respuesta.
Me da este error:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/Mr. Tee/sell.php on line 19
  #30 (permalink)  
Antiguo 29/01/2013, 11:36
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problemón formulario php

Buenas,

eso es que no se ejecuto la consulta

pon esto

$result =mysql_query($query) or die(mysql_error());

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..

Etiquetas: formulario, post
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 09:44.