Foros del Web » Programando para Internet » PHP »

Problema pasando variables por formulario

Estas en el tema de Problema pasando variables por formulario en el foro de PHP en Foros del Web. Hola again (a este paso voy a tema por día qué depresión...)! Creo que hay fantasma en mi PC porque lo que funcionaba ayer, hoy ...
  #1 (permalink)  
Antiguo 19/07/2006, 14:09
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Problema pasando variables por formulario

Hola again (a este paso voy a tema por día qué depresión...)!

Creo que hay fantasma en mi PC porque lo que funcionaba ayer, hoy al iniciar PC y comprobarlo ya no funciona y es desesperante porque no encuentro el error. (¿es esto posible?)

Veamos, tengo un formulario corriente y moliente en este archivo:

Código PHP:
<?php
require_once '../includes/conn.php';
include(
'header.php');
include(
'funciones.php');

$titulo '';
$cuerpo '';
$article '';
$autorid '';

if (isset(
$_GET['a']) 
    and 
$_GET['a'] == 'editar' 
    
and isset($_GET['article']) 
    and 
$_GET['article']) 
    
    {
    
$sql "SELECT titulo,cuerpo,autor_id FROM not_main WHERE not_id='" $_GET['article']."'";

    
$result mysql_query($sql,$conn)
        or die(
'No se pueden obtener los datos del artículo; ' mysql_error());

    
$row mysql_fetch_array($result);
    
$titulo $row['titulo'];
    
$cuerpo $row['cuerpo'];
    
$article $_GET['article'];
    
$autorid $row['autor_id'];
    }
    
    require_once 
'header.php';
?>



<form action="transact-article.php" method="post" >
<h2>Escribir documento</h2>
<p>Titulo:</p>
<p><input type="text" class="titulo" name="titulo" size="93" maxlength="500" value="<?php echo htmlspecialchars($titulo); ?>" /></p>
<p>Texto:</p>
<p><textarea class="cuerpo" name="cuerpo" rows="20" cols="70"><?php echo htmlspecialchars($cuerpo); ?></textarea></p>
<br />
<h4>Seleccione una categoría:</h4>
<br />
<p><a href="includes/cat.php">Crear una nueva categoría principal</a></p>
<p><a href="includes/subcat.php">Crear una nueva subcategoría</a></p>
<br />

<br />
<p>
<?php

echo '<input type="hidden" name="article" value="' $article "\" />\n";
    if (
$_SESSION['access_lvl'] < 2) {
        echo 
'<input type="hidden" name="autorid" value="' $row['autor_id'] . "\" />\n";
    }
    if (isset(
$_GET['article'])) {
        echo 
'<input type="submit" class="submit" name="action" ' "value=\"Guardar los cambios\" />\n";
    } else {
        echo 
'<input type="submit" class="submit" name="action" ' "value=\"Enviar\" />\n";
    }
?>
</p>

</form>

<?php require_once 'footer.php'?>
Y el archivo transact-article.php es este (abreviado porque es largo):

Código PHP:
<?php
    session_start
();
    require_once 
'../includes/conn.php';
    require_once 
'http.php';

    if (isset(
$_POST['action'])) {
        switch (
$_POST['action']) {
            case 
'Enviar':
                if (isset(
$_POST['titulo']) and isset($_POST['cuerpo'])    and isset($_SESSION['autor_id']))                 {
                
$sql "INSERT INTO not_main (titulo,autor_id,cuerpo,fecha_envio)  VALUES ('".$_POST['titulo']."','".$_SESSION['autor_id']."','".$_POST['cuerpo']."', NOW())";

                
mysql_query($sql$conn) or die('No se puede enviar el artículo; ' mysql_error());
                }
                
redirect('index.php');
                break;

            case 
'Editar':
                
redirect('compose.php?a=editar&article=' $_POST['article']);
                break;
(...)
El problema está en que no realiza la consulta a la base de datos y creo que está bien redactada y estoy al borde del ataque! Si quito el redirect y espero el mysql_error() no me da ningún tipo de error. Lo que hice fue sustituir el redirect por un else que dijera algo por un echo en caso de que no se ejecutara el if. Así que pienso que los valores no están pasando correctamente al archivo transact-article.php y no sé por qué. Si es justo como estaba ayer y funcionaba

Gracias y saludos
  #2 (permalink)  
Antiguo 19/07/2006, 14:15
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
vos a autorid la pasas por POST y keres tener su valor por

$_SESSION['autor_id']?

encima se llaman distinto....

osea si keres sacar el autorid tendria q levantarlo como $_POST['autorid'] NO COMO $_SESSION['autor_id'] , ese es solo un ejemplo la misma logica para otras de las variables...
  #3 (permalink)  
Antiguo 19/07/2006, 14:29
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias Nefertiter!

Así sí que funciona.

Lo que sucede es que yo quiero comprobar si el usuario ha iniciado la sesión, entonces no sé si al dejarlo como $_POST en lugar de $_SESSION sirve para lo mismo :?
  #4 (permalink)  
Antiguo 19/07/2006, 14:55
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Pues la forma mas adecuada y segura seria mediante $_session[].


Saludillos.
  #5 (permalink)  
Antiguo 20/07/2006, 10:06
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Lo sé mauled, pero no entiendo por qué no me coje $_SESSION cuando está session_start(); arriba del todo... y en cambio sí identifica y funciona todo lo demás correctamente.
  #6 (permalink)  
Antiguo 20/07/2006, 17:49
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
todo depende de como hagas el login segun como q session declares al hacer el mismo tendria q poenr al principio de la web


<?
session_start();

if (isset($_SESSION['var_sesion'])){
/*
armas la web
*/

}else{
header("Location:form_login.php");
exit();
}

?>
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 15:46.