Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con codigo PHP

Estas en el tema de Problema con codigo PHP en el foro de PHP en Foros del Web. Hola chicos, Fijense que estoy tratando de hacer un formulario donde pueda cambiar mi contraseña actual. Sin embargo me estan saliendo estos Warning y Errores ...
  #1 (permalink)  
Antiguo 02/05/2013, 01:51
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Problema con codigo PHP

Hola chicos,

Fijense que estoy tratando de hacer un formulario donde pueda cambiar mi contraseña actual.

Sin embargo me estan saliendo estos Warning y Errores

Notice: Undefined index: usu in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 25

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 27

Notice: Undefined index: color in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 35

Notice: Undefined index: mensaje_clave in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 36


Quiero ver si me pueden ayudar plisssssssss

Les dejo el codigo


cambiar_clave.php
Código PHP:
<?php session_start(); 
    
        if(
$_SESSION['username']==""){ 
            
header('location:index.html');
        }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cambiar Contraseña</title>
<script type="text/javascript" src="js/jquery.js"></script>    
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/whmcs.css" rel="stylesheet">
<style type="text/css">
body {
    background-color: #FFFFFF;
}
</style>
<script src="js/whmcs.js"></script>
<?php

include('php_conexion.php');

$codigo=$_SESSION['usu'];
$cans=mysql_query("SELECT * FROM usuarios WHERE codigo=$codigo");
if(
$dat=mysql_fetch_array($cans)){
    
$correo=$dat['correo'];
    
$nombre=$dat['nombre'];
    
$tipo=$dat['tipo'];
}else{
//    header('location:entrar.php');
}

    
$color=$_SESSION['color'];
    
$mensa=$_SESSION['mensaje_clave'];        




?>

</head>
<body>
<div class="whmcscontainer">
       <div class="contentpadded">
        <div class="page-header">
            <div class="styled_title">
              <h1>Cambiar Contraseña</h1></div>
        </div>
        <p>&nbsp;</p>
        <table class="zebra-striped">
            <thead>
                <tr>
                    <th colspan="2" class="headerSortdesc">Nombre : <?php echo $nombre?> </th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td width="52%" height="45">
                    <form name="form1" method="get" action="cambioclave.php">
                        <label for="textfield">Contraseña Antigua :</label>
                        <input type="password" name="claveA" id="textfield"><br><br>
                        <label for="textfield">Nueva Contraseña :</label>
                        <input type="password" name="claveN1" id="textfield"><br><br>
                        <label for="textfield">Valida Contraseña :</label>
                        <input type="password" name="claveN2" id="textfield">
                        <br>
                        <br>
                        <input type="submit" name="button" id="button" value="Cambiar Contraseña" class="btn success">
                        <br>
                        <br>
                        <p><span style="color:<?php echo $color?>"><?php echo $mensa?></span></p>
                        
                      </form></td>
                    <td width="48%">Acontinuacion debe de digitar en el primer campo (Contraseña Antigua) su contraseña con que ha venido consultando su cuenta, para validar si es usted quien esta solicitando el cambio, despues en segundo campo de texto (Nueva Contraseña) debe digitar una nueva clave y en tercer (Valida Contraseña) campo debe digitar de nuevo la misma contraseña que digito en el segundo campo </td>
                </tr>
            </tbody>
        </table>
    </div>
</div>
</div>
</body>
</html>
y el otro.

cambioclave.php

Código PHP:
<?php
session_start
(); 
include(
'php_conexion.php');

$clave1=$_GET['claveA'];
$clave2=$_GET['claveN1'];
$clave3=$_GET['claveN2'];

$_SESSION['mensaje_clave']='.';
$_SESSION['color']='#000';

$codigo=$_SESSION['username'];
$cans=mysql_query("SELECT * FROM usuarios WHERE codigo=$codigo and clave='$clave1'");
if(
$dat=mysql_fetch_array($cans)){
    if(
$clave2==$clave3){
        
$xSQL="Update usuarios Set clave='$clave3' Where codigo=$codigo";
        
mysql_query($xSQL);
        
header('location:cambiar_clave.php');
        
$_SESSION['mensaje_clave']='Clave Cambiada con exito';
        
$_SESSION['color']='#060';
    }else{
        
$_SESSION['mensaje_clave']='Las claves no son iguales';
        
$_SESSION['color']='#F00';
        
header('location:cambiar_clave.php');
    }
}else{
    
$_SESSION['mensaje_clave']='Contraseña incorrepta';
    
$_SESSION['color']='#F00';
    
header('location:cambiar_clave.php');
}

?>
  #2 (permalink)  
Antiguo 02/05/2013, 01:57
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Respuesta: Problema con codigo PHP

Creo que el mensaje de warning te lo dice bastante claro:

Las variables de sesion usu, color y mensaje_clave no existen, y por eso mismo te da error la consulta que está esperando el parametro $_SESSION['usu'] pero este no existe.
  #3 (permalink)  
Antiguo 02/05/2013, 02:04
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con codigo PHP

Hola

Gracias por tu ayuda, veo que en el codigo si las defini aparecen de esta manera

$codigo=$_SESSION['usu'];
$color=$_SESSION['color'];
$mensa=$_SESSION['mensaje_clave'];

Estan bien??

saludos
  #4 (permalink)  
Antiguo 02/05/2013, 02:08
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Respuesta: Problema con codigo PHP

Ahí no estás definiendo estas variables.

Solo asignas el valor de $_SESSION['usu']; a $codigo pero la cuestion y lo que indica el error es que $_SESSION['usu']; no tiene valor, por lo tanto a $codigo le estas asignando un valor vacio. Lo mismo pasa con las demás variables.
  #5 (permalink)  
Antiguo 02/05/2013, 18:16
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con codigo PHP

Pr0

Fijate que ya pude corregir unos con estas sentencias

if (isset($_SESSION['usu'])) {
$codigo = $_SESSION['usu'];
} else {
$codigo = "";
}

Sin embargo me qudaron dor errores mas

Notice: Undefined variable: codigo in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 26

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Users/JulioAAS/Documents/localhost/Archivos/cambiar_clave.php on line 27

El de codigo lo declare igual que los otros pero al parecer ese no me funciona

saludos
  #6 (permalink)  
Antiguo 02/05/2013, 18:37
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Problema con codigo PHP

Amigo un error el de la linea 26, no se esta viniendo la variable sesión y el otro es sencillamente que tienes mal la sentencia SQL
  #7 (permalink)  
Antiguo 02/05/2013, 18:54
Avatar de mandrake88  
Fecha de Ingreso: septiembre-2009
Mensajes: 328
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problema con codigo PHP

Algo que veo que nadie te marco, estas usando para las querys SQL los datos que levantas del GET sin ningun tipo de filtro. Ese script es vulnerable a injecciones SQL, no le tomaria mas de 2 min a un atacante robarte o borrarte toda la base de datos.
  #8 (permalink)  
Antiguo 02/05/2013, 19:03
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con codigo PHP

Cita:
Iniciado por mandrake88 Ver Mensaje
Algo que veo que nadie te marco, estas usando para las querys SQL los datos que levantas del GET sin ningun tipo de filtro. Ese script es vulnerable a injecciones SQL, no le tomaria mas de 2 min a un atacante robarte o borrarte toda la base de datos.
Y que me recomiendas hacer???
  #9 (permalink)  
Antiguo 02/05/2013, 22:06
Avatar de mandrake88  
Fecha de Ingreso: septiembre-2009
Mensajes: 328
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problema con codigo PHP

Mi recomendacion siemrpe es programar sobre un framework que te brinda herramientas para todo este tipo de cosas, pero para un script simple como estas haciendo podes usar la siguiente funcion de php:

http://php.net/manual/es/function.my...ape-string.php

Ahi tienes la explicacion y abajo tienes ejempplos de uso
Como regla general recuerda esto: toda variable que contenga informacion proveniente desde afuera (ya sea ingresada via POST o GET por el usuario en un formulario, o inclusive leida desde otra pagina) debe ser filtrada antes de ser usada en una consulta a la base de datos (culquier tipo de consulta: selects, inserts, update, cualquiera). Nunca debes pasar un string directo a una consulta o estaras expuesto a ataques de injecion SQL que son los mas peligrosos, pueden borrarte toda la base de datos, robartela, modificarte cosas, etc.
  #10 (permalink)  
Antiguo 02/05/2013, 22:35
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con codigo PHP

Cita:
Iniciado por mandrake88 Ver Mensaje
Mi recomendacion siemrpe es programar sobre un framework que te brinda herramientas para todo este tipo de cosas, pero para un script simple como estas haciendo podes usar la siguiente funcion de php:

[url]http://php.net/manual/es/function.mysql-real-escape-string.php[/url]

Ahi tienes la explicacion y abajo tienes ejempplos de uso
Como regla general recuerda esto: toda variable que contenga informacion proveniente desde afuera (ya sea ingresada via POST o GET por el usuario en un formulario, o inclusive leida desde otra pagina) debe ser filtrada antes de ser usada en una consulta a la base de datos (culquier tipo de consulta: selects, inserts, update, cualquiera). Nunca debes pasar un string directo a una consulta o estaras expuesto a ataques de injecion SQL que son los mas peligrosos, pueden borrarte toda la base de datos, robartela, modificarte cosas, etc.
Muchas gracias por el consejo, voy a hacer las modificaciones pertinentes para hacerlo mas seguro.

Mil gracias a todos!!

Etiquetas: formulario, html, mysql, select, sql, usuarios
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 01:05.