Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas al llamar datos post, agrega 1 al final

Estas en el tema de Problemas al llamar datos post, agrega 1 al final en el foro de PHP en Foros del Web. Me imprime el resultado, pero agrega un numero 1 al final dando como resultado un usuario y clave inexistente. Mi duda es: en que estoy ...
  #1 (permalink)  
Antiguo 27/08/2014, 09:53
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Problemas al llamar datos post, agrega 1 al final

Me imprime el resultado, pero agrega un numero 1 al final dando como resultado un usuario y clave inexistente. Mi duda es: en que estoy mal...

Me regresa al inicio de la pagina, si quito los comentarios y el print_r. No procesa la informaciones POST correctamente.

Esta es la página para subir datos:

Código HTML:
Ver original
  1. <?php
  2. session_start();
  3. ?>
  4. <meta charset="UTF-8">
  5. <title>Acceso</title>
  6. <link href="accesop.css" rel="stylesheet" type="text/css">
  7. <script language="javascript">
  8.  
  9. var device = navigator.userAgent;
  10.  
  11. var url = "http://m.miweb.com/";
  12.  
  13. if (device.match(/Iphone/i)|| device.match(/Ipod/i)|| device.match(/Android/i)|| device.match(/J2ME/i)|| device.match(/BlackBerry/i)|| device.match(/iPhone|iPad|iPod/i)|| device.match(/Opera Mini/i)|| device.match(/IEMobile/i)|| device.match(/Mobile/i)|| device.match(/HTC/i))
  14.  
  15. {
  16.  
  17. window.location.replace(url);
  18. window.location = url;
  19.  
  20. } else {
  21.  
  22. }
  23.  
  24.   <p><img src="imagen/logo.png" width="400" height="180" alt=""/></p>
  25.   <p>&nbsp;</p>
  26. <section><table width="50%" border="0" align="center" cellspacing="0">
  27.   <tr>
  28.     <td width="77%"><p><br>
  29.       USUARIO
  30.         </p>
  31.       <form action="saint/leo.php" method="post">
  32.       <input name="usuario" type="text" autofocus required="required" id="usuario" placeholder="Escribe tu usuario" pattern="^([\w]{7,10})$" autocomplete="on" maxlength="10">
  33.       </p>
  34.       <p>CONTRASEÑA </p>
  35.       <p>
  36.         <input name="contrasena" type="password" required="required" id="contrasena" placeholder="Escribe tu contraseña" pattern="^([\w]{7,10})$" maxlength="10">
  37.         </p>
  38.       <p>
  39.         <input name="submit" type="submit" id="submit" formenctype="application/x-www-form-urlencoded" value="Enviar"></form>
  40.       </p><br>
  41.       </p></td>
  42.     </tr>
  43.   <tr>
  44.    
  45.     </tr>
  46. </body>
  47. </html>




Esta procesa los datos


Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['usuario']) && $_POST['usuario'] != '' && isset($_POST['contrasena']) && $_POST['contrasena'] != '')
  3. {
  4. $usuario = $_POST['usuario'];
  5. $contrasena = $_POST['contrasena'];
  6.  
  7. $con = mysqli_connect("localhost","prueba","prueba","lololo");
  8. $sen = "SELECT usuario, contrasena FROM personal";
  9. $res = mysqli_query($con,$sen);
  10.  
  11. while($fila = mysqli_fetch_array($res)){
  12.     $usbase = $fila['usuario'];
  13.     $conbase = $fila['contrasena'];
  14.    
  15.     if($usuario == $usbase & $contrasena == $conbase){
  16.         $_SESSION['usuario'] = $usbase;
  17.         $_SESSION['contrasena'] = $conbase;
  18.        
  19.         echo print_r($usbase);
  20.         /*echo'
  21.         <html>
  22.         <head>
  23.         <meta http-equiv="refresh" content="0;url=../acceso/inicio.php"
  24.         </head>
  25.         </html>
  26.         ';
  27. } else{
  28.     echo'
  29.     <html>
  30.         <head>
  31.         <meta http-equiv="refresh" content="0;url=../index.php">
  32.         </head>
  33.         </html>
  34.         ';*/
  35. }
  36. }}
  37. ?>
__________________
Mi life in pixel -_-
  #2 (permalink)  
Antiguo 27/08/2014, 10:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas al llamar datos post, agrega 1 al final

¿Por qué usas un operador bit a bit en la condición de la línea 16? De ese modo, la condición se cumplirá solo cuando ambas partes sean iguales a nivel de bits. Ten cuidado con eso.

Por otro lado, ¿en dónde es que se agrega ese '1'?

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 27/08/2014, 10:41
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

echo print_r($usbase);


me arroja el resultado de la tabla al que estoy llamando, pero imprime el resultado con un 1 al final de mas. Eso lo ignoro o es correcto en mysqli?


Anteriormente hacia el acceso por mysql, pero quiero aprender a cambiar todo a mysqli

Este es el codigo que usaba en mysql

Código PHP:
Ver original
  1. <?php
  2. $usuario = $_POST['usuario'];
  3. $contrasena = $_POST['contrasena'];
  4.  
  5. $conexion = mysql_connect("localhost","odek","cac4b160");
  6. mysql_select_db("vpegaso",$conexion);
  7. $resultado = mysql_query("SELECT usuario, contrasena, nombre FROM hanar");
  8.  
  9.  
  10. while($fila = mysql_fetch_array($resultado)){
  11.     $usbase = $fila['usuario'];
  12.     $conbase = $fila['contrasena'];
  13.    
  14.     if($usuario == $usbase & $contrasena == $conbase){
  15.         $_SESSION['usuario'] = 'dragom';
  16.         $_SESSION['contrasena'] = 'dinosaurix';
  17.         echo'
  18.         <html>
  19.         <head>
  20.         <meta http-equiv="refresh" content="0;url=../acceso/enunsitio/inicio.php"
  21.         </head>
  22.         </html>
  23.         ';
  24. } else{
  25.     echo'
  26.     <html>
  27.         <head>
  28.         <meta http-equiv="refresh" content="0;url=../index.php">
  29.         </head>
  30.         </html>
  31.         ';
  32. }
  33. }
  34.  
  35.  
  36. ?>
__________________
Mi life in pixel -_-
  #4 (permalink)  
Antiguo 27/08/2014, 11:00
Avatar de jodatelo  
Fecha de Ingreso: marzo-2010
Ubicación: Ecuador
Mensajes: 65
Antigüedad: 14 años
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

Primero prueba esto, borra la linea 20 osea "echo print_r.." y cambialo por estas 2 lineas y mira que te arroja

$miprint = substr($usbase, 0, -1);
echo print_r($miprint);
  #5 (permalink)  
Antiguo 27/08/2014, 11:24
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

el usuario es tecnico02, al mandar a imprimir el usuario me envía:

tecnico021

realizando esto:

Código PHP:
Ver original
  1. $miprint = substr($usbase, 0, -1);
  2. echo print_r($miprint);

el resultado es tecnico01.


Donde esta el problema desde que estoy migrando mysql a mysqli he encontrado muchos problemas.
__________________
Mi life in pixel -_-
  #6 (permalink)  
Antiguo 27/08/2014, 11:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas al llamar datos post, agrega 1 al final

En realidad, el que uses la extensión mejorada MySQLi no tiene absolutamente nada que ver con el resultado que estás obteniendo. Intenta hacer esto:

Código PHP:
Ver original
  1. $foo = array();
  2. while ($fila = mysqli_fetch_array($res)){
  3.     $foo[] = array('usuario' => $fila['usuario'], 'contrasena' => $fila['contrasena']);
  4. }
  5.  
  6. echo '<pre>';
  7. print_r($foo);
  8. echo '</pre>';

Y muéstranos el resultado que obtienes. También revisa si en la BD no existe ese '1' extra.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 27/08/2014, 11:57
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

Este es el resultado:


Array
(
[0] => Array
(
[usuario] => tecnico02
[contrasena] => peñafiel
)

)



Porque agregara el print_r 1 al final en usuario y contraseña?

El problema es que al comprobar que la sesión del usuario siga abierta, las demás paginas no reconocen ese usuario de técnico 021
__________________
Mi life in pixel -_-
  #8 (permalink)  
Antiguo 27/08/2014, 12:01
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

Logre que pasara de este sitio mediante esta manera, desgraciadamente no guarda la session del usuario en las demás paginas ya que no existe sesssion tecnico021

Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = $_POST['usuario'];
  4. $contrasena = $_POST['contrasena'];
  5.  
  6. $con = mysqli_connect("localhost","prueba","prueba","lolo");
  7. $sen = "SELECT * FROM personal WHERE usuario = '$usuario' AND contrasena = '$contrasena'";
  8. $res = mysqli_query($con,$sen);
  9.  
  10. while($fila = mysqli_fetch_array($res)){
  11.     $usbase = $fila['usuario'];
  12.     $conbase = $fila['contrasena'];
  13.    
  14.     if($usuario == $usbase & $contrasena == $conbase){
  15.         $_SESSION['usuario'] = $usuario;
  16.         $_SESSION['contrasena'] = $contrasena;
  17.  
  18. echo'
  19.         <html>
  20.         <head>
  21.         <meta http-equiv="refresh" content="0;url=../acceso/inicio.php"
  22.         </head>
  23.         </html>
  24.         ';
  25. } else{
  26.     echo'
  27.     <html>
  28.         <head>
  29.         <meta http-equiv="refresh" content="0;url=../index.php">
  30.         </head>
  31.         </html>
  32.         ';
  33. }
  34. }
  35. ?>
__________________
Mi life in pixel -_-
  #9 (permalink)  
Antiguo 27/08/2014, 12:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas al llamar datos post, agrega 1 al final

La verdad es que me parece tan extraño lo que te sucede. Solo por si a caso, prueba usando el operador lógico && en lugar del operador bit a bit & en la condición de la línea 16.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 27/08/2014, 14:23
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problemas al llamar datos post, agrega 1 al final

Realize este codigo por error

Código PHP:
Ver original
  1. echo print_r ($usbase);
  2.         print_r ($usbase);

Y sucede que el primero muestra tecnico021 y el segundo tecnico02


A que se debe esto?
__________________
Mi life in pixel -_-
  #11 (permalink)  
Antiguo 27/08/2014, 15:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas al llamar datos post, agrega 1 al final

Si mal no me equivoco, es porque al usar el constructor echo aplicado al constructor print_r, este último retorna true (pues no especificas que solo devuelva la información en lugar de imprimirla) y al ser impreso por echo, se visualiza como 1. Puedes pasar el valor booleano true como segundo parámetro a print_r para que así devuelva la información contenida en la variable y no la imprima, aunque en realidad ese echo está de más ahí, con print_r es suficiente.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: final, html, mysql, post, select
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 14:04.