Comunidad de diseño web y desarrollo en internet online

Notice: Use of undefined constant

Citar            
MensajeEscrito el 02 Dic 2010 11:43 pm
Hola que tal, pues este problemilla me saco de onda, no le he movida nada a esa linea, solo agrege un campo a extra a mi base de datos y se lo agregue al final del query de sql para que lo tenga en cuenta... sin embargo no se que pex, no me anda y me salio ese error...

Aqui esta todo:
Notice: Use of undefined constant Nagregar - assumed 'Nagregar' in C:\wamp\www\davidsuarez\agregarProyecto.php on line 15

Código PHP :

<?php
$con = mysql_connect("localhost","root","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


mysql_select_db("usuarios_fdsr", $con);

//aqui dice si aprete el boton Ingresar y nombre es distinto de vacio ejecuto
//else de lo contrario no ejecuto
if (strlen($_POST[Nagregar]) != "0")
{   
   $sql = "INSERT INTO `proyectos` (`pNombre`, `correo`, `estado`, `id`, `correo2`, `pURL`, `Ndescripcion`) 
   VALUES ('$_POST[Nagregar]','$_POST[Ncorreo]','$_POST[Nestado]', NULL, '[email protected]', '$_POST[Nagregar]', '$_POST[Ndescripcion]')";
   
   if (!mysql_query($sql,$con))
     {
     die('Error: ' . mysql_error());
     header("Location: aplicacion.php");
     }
   
} else {
   header("Location: aplicacion.php");

}

?> 



y este es el formulario desde en html

Código HTML :

<?php
session_start();
if ($_SESSION["autentificado"] != "SI") { 
    //si no existe, envio a la página de autentificacion
    header("Location: index.htm");
    //ademas salgo de este script
    exit();
} else {
   $nombre = $_SESSION["nombre"];
   $correo = $_SESSION["correo"];
}

// conectar a la base de datos y mostrar los proyectos que ese usuario tiene
$con = mysql_connect("localhost","root","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


mysql_select_db("usuarios_fdsr", $con);

    //crea y realiza la consulta
   $result = @mysql_query("SELECT * FROM proyectos WHERE correo = '$correo' OR  correo2 = '$correo' ORDER BY id ") or die(mysql_error());
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bienvenido <?php echo $nombre ?></title>


<link href="estilos.css" rel="stylesheet" type="text/css" />


</head>

<body class="centrar">

<div id="bienvenido">
   Bienvenido <?php echo $nombre ?>
</div>
<div id="proyectos">
  <strong>Proyectos</strong><br /><br />
    <?php
    echo "<table border='0px'>";

   while($row = mysql_fetch_array($result))
     {
     echo "<tr>";
     echo "<td>" ."<div class='enlace'><a href='".$row['pURL']."'>". $row['pNombre'] ."</a></div>". "</td>";
     echo "</tr>";
     }
   echo "</table>";
   ?>
    
    <div id="agregarProyecto">
       <img src="imgs/add2.png" align="texttop" /> <span> Agregar Proyecto</span>
        

        
    </div>
</div>

<div id="contenido">
   <ol id="toc">
    <li><a href="#page-1"><span>Agregar Proyecto</span></a></li>

    <li><a href="#page-2"><span>Pagina 2</span></a></li>
    <li><a href="#page-3"><span>Pagina 3</span></a></li>
</ol>
<div class="content" id="page-1">
    <h2>Agregar Proyecto</h2>
           <p>
           <form action="agregarProyecto.php" method="post">
                <span>
                <label>Nombre: </label><br /><input type="text" id="Nagregar" name="Nagregar" value=""  /> <br />
                <label>Agregado por: </label><br /><input name="Ncorreo3" type="text" disabled="disabled"  id="NCorreo3" value="<?php echo $_SESSION["correo"]; ?>"/><br />
                <input name="Ncorreo" type="hidden"  id="NCorreo" value="<?php echo $_SESSION["correo"]; ?>"/><br />
                <label>Estado: </label><br /><select name="Nestado" id="Nestado" size="1">
                  <option value="planeacion" selected="selected">En planeacion</option>
                  <option value="iniciando">Iniciando...</option>
                  <option value="revision">En revision</option>
                  <option value="abandonado">Abandonado</option>
                  <option value="esperando aprovacion">Sujeto a aprovacion</option>
                </select><br /><br />
                <label>Descripcion: </label><br />
                <textarea cols="100" name="Ndescripcion" id="Ndescripcion"></textarea><br /><br />
                <input name="Submit" type="submit" value="Agregar" id="Bagregar" />
                </span>
           </form>
        </p>
</div>
<div class="content" id="page-2">
    <h2>Page 2</h2>

    <p>Text...</p>
</div>
<div class="content" id="page-3">
    <h2>Page 3</h2>
    <p>Text...</p>
</div>
<script src="activatables.js" type="text/javascript"></script>
<script type="text/javascript">
activatables('page', ['page-1', 'page-2', 'page-3']);
</script>

</div>
   
</body>
</html>


Gracias, espero ver porque sale ese notice, es molesto verlo por ahi aparenciendo

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Dic 2010 12:15 am
Lo que sucede es que PHP te esta avisando que estas utilizando constantes no definidas, aparentemente todo funciona bien pero te aparece ese "error" que en realidad es un aviso de PHP.

En tu query estas mandando llamar los valores de un array sin poner el index entre comillas

osea estas haciendo esto

Código PHP :

$array[index];


Donde index, no es el nombre de indice si no una constante. PHP puede pasar por alto este error, buscando primero una constante pero si no existe te avisa, y busca un nombre de indice con ese titulo.

Para corregir esto debes cambiar tu Query por:

Código PHP :

$sql = "INSERT INTO proyectos (pNombre, correo, estado, id, correo2, pURL, Ndescripcion)  
   VALUES ('{$_POST['Nagregar']}','{$_POST['Ncorreo']}','{$_POST['Nestado']}', NULL, '[email protected]', '{$_POST['Nagregar']}', '{$_POST['Ndescripcion']}')";


y

Código PHP :

strlen($_POST['Nagregar'])


Cabe destacar que estas guardando en la base de datos directamente lo que escribe el usuario. esto quiere decir

ERROR. sistema vulnerable.

Tu debes filtrar primero esas variables antes de enviarlas a tu base de datos

busca htmlentities o stripslashes en google.

Saludos ;)

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 03 Dic 2010 12:21 am
Gracias, e interesante, no sabia que estaba usando un array... ni idea de cuando lo puse o como lo puse... leere sobre los temas que me recomiendas.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Dic 2010 12:33 am
$_POST[] al final de cuentas es un array asociativo :)

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox

 

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