Foros del Web » Programando para Internet » PHP »

me lo procesa aun estar el valor en blanco

Estas en el tema de me lo procesa aun estar el valor en blanco en el foro de PHP en Foros del Web. hola tengo un fichero que me procesa un pedido Código PHP: <? include ( "admin/localhost.php" ); $pago  =  $_GET [ "pago" ]; if ( $pago  ==  "2" ...
  #1 (permalink)  
Antiguo 25/08/2008, 02:28
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
me lo procesa aun estar el valor en blanco

hola tengo un fichero que me procesa un pedido

Código PHP:
<?
include ("admin/localhost.php");
$pago $_GET["pago"];
if (
$pago == "2")
{
    
header("Location: carrito-ok2.php");
    
end;
}
foreach (
$_GET as $nombre_campo => $valor)
{
    
$asignacion "\$" $nombre_campo "='" $valor "';";
    eval(
$asignacion);
}
$userid $_SESSION['privado'];
if (
$userid != "") {
$result mysql("$database_localhost""Select * From opciones where id = 1"$localhost);
$row = @mysql_fetch_array($result);
$certificado $row[certificado];
$asegurado $row[asegurado];
$result mysql("$database_localhost""Select * From empresas where id = '$userid'",
    
$localhost);
$row = @mysql_fetch_array($result);
$empresa $row[nombre];
$email2 $row[email];
$direccion $row[direccion];
$localidad $row[localidad];
$provincia $row[provincia];
$cp $row[cp];
$telefono $row[telefono];
$dni $row[dni];
$email "[email protected]";
//$email="[email protected]";
$from "From: QuatroMuebles.com<[email protected]>\r\nReply-To: [email protected]\r\nReturn-path: [email protected]\r\n";
$asunto "Nuevo pedido desde la web";
$asunto2 "Copia de su pedido a QuatroMuebles.com";
$texto "
Nombre: $empresa
DNI: $dni
Email: $email2
Dirección: $direccion
Localidad: $localidad
Provincia: $provincia
Código Postal: $cp
Teléfono: $telefono
DATOS DEL PEDIDO
"
;
$total1 "0";
$result mysql("$database_localhost""Select * From carrito where cliente = $userid",
    
$localhost);
while (
$row = @mysql_fetch_array($result))
{
    
$cantidad $row[cantidad];
    
$prodid $row[producto];
    
$id $row[id];
    
$result2 mysql("$database_localhost""Select * From muebles where id = $prodid",
        
$localhost);
    
$row2 = @mysql_fetch_array($result2);
    
$nombre $row2[nombre];
    
$precio number_format($row2[pvd], 2","".");
    
$total $row2[precio] * $cantidad;
    
$total2 number_format($total2","".");
    
$total1 $total1 $total;
    
$texto .= $cantidad " " $nombre " (" $total2 ")
"
;
}
$total1 $total1 $certificado;
$envio "Gastos de envío: " $certificado " Euros";
$texto .= "
Forma de Envío: $envio
TOTAL PEDIDO: " 
number_format($total12","".");
$fecha date(Ymd);
if (
$empresa != ""){
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$aviso "
Para completar su pedido, deberá realizar un ingreso o transferencia bancaria por el total de su pedido (indicando el número de éste: $idmailpedido) en alguna de las siguientes cuentas:
La Caixa: 2100 2127 11 02000320483
Para agilizar la tramitación, puede enviar una copia de su ingreso o transferencia vía fax al 91 544 50 07 o por e-mail a: [email protected]."
;
$texto .="
NUMERO DE PEDIDO: $idmailpedido"
;}
//ENVIANDO A CLIENTE
if ($empresa != ""){
mail($email2$asunto2$texto $aviso$from);
$fecha date(Ymd);
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$texto .= "
Hay una copia de seguridad de este pedido que debe eliminar desde su panel de control: http://www.quatromuebles.com/admin"
;
}
else {
header("location:http://www.quatromuebles.com/conregistro.php");
}
//ENVIANDO AL ADMIN
if ($empresa !="")  {
mail($email$asunto"DATOS CLIENTE" $texto$from);
$result mysql("$database_localhost""delete From carrito where cliente = $userid",
    
$localhost);}
 else {
header("location:http://www.quatromuebles.com/conregistro.php"); }
}
else{
header("location:http://www.quatromuebles.com/conregistro.php"); }
?>
lo que he hecho es poner esto

Código PHP:
if ($userid != "") { 
tanto con userid como $empresa

para que si el valor viene en blanco no me procese el pedido.

el problema viene de que cuando pasa el robot de cualquier buscador me genera un pedido en blanco y con el if no me lo para


alguien sabe?
  #2 (permalink)  
Antiguo 25/08/2008, 03:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: me lo procesa aun estar el valor en blanco

No se exactamente a qué te refieres. ¿No quieres que se te genere el pedido si no se introducido ningún valor en userid?
si es eso:

¿qué valor posee $_SESSION['privado']?
si posee alguno la condición del if() sería TRUE

si $_SESSION['privado'] es al valor introducido tendrías que asegurarte que no se han pasado espacios en blanco ' ' los cuales harían cierta la condición del if()

Una pregunta: el if ($userid != "") { ¿¿dónde termina??
  #3 (permalink)  
Antiguo 25/08/2008, 03:53
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: me lo procesa aun estar el valor en blanco

ei userid lleva el valor de un form en el cual sel usuario se valida es una variable de session

el if tiene todo esto

Código PHP:
if ($userid != "") {
$result mysql("$database_localhost""Select * From opciones where id = 1"$localhost);
$row = @mysql_fetch_array($result);
$certificado $row[certificado];
$asegurado $row[asegurado];
$result mysql("$database_localhost""Select * From empresas where id = '$userid'",
    
$localhost);
$row = @mysql_fetch_array($result);
$empresa $row[nombre];
$email2 $row[email];
$direccion $row[direccion];
$localidad $row[localidad];
$provincia $row[provincia];
$cp $row[cp];
$telefono $row[telefono];
$dni $row[dni];
$email "[email protected]";
//$email="[email protected]";
$from "From: QuatroMuebles.com<[email protected]>\r\nReply-To: [email protected]\r\nReturn-path: [email protected]\r\n";
$asunto "Nuevo pedido desde la web";
$asunto2 "Copia de su pedido a QuatroMuebles.com";
$texto "
Nombre: $empresa
DNI: $dni
Email: $email2
Dirección: $direccion
Localidad: $localidad
Provincia: $provincia
Código Postal: $cp
Teléfono: $telefono
DATOS DEL PEDIDO
"
;
$total1 "0";
$result mysql("$database_localhost""Select * From carrito where cliente = $userid",
    
$localhost);
while (
$row = @mysql_fetch_array($result))
{
    
$cantidad $row[cantidad];
    
$prodid $row[producto];
    
$id $row[id];
    
$result2 mysql("$database_localhost""Select * From muebles where id = $prodid",
        
$localhost);
    
$row2 = @mysql_fetch_array($result2);
    
$nombre $row2[nombre];
    
$precio number_format($row2[pvd], 2","".");
    
$total $row2[precio] * $cantidad;
    
$total2 number_format($total2","".");
    
$total1 $total1 $total;
    
$texto .= $cantidad " " $nombre " (" $total2 ")
"
;
}
$total1 $total1 $certificado;
$envio "Gastos de envío: " $certificado " Euros";
$texto .= "
Forma de Envío: $envio
TOTAL PEDIDO: " 
number_format($total12","".");
$fecha date(Ymd);
if (
$empresa != ""){
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$aviso "
Para completar su pedido, deberá realizar un ingreso o transferencia bancaria por el total de su pedido (indicando el número de éste: $idmailpedido) en alguna de las siguientes cuentas:
La Caixa: 2100 2127 11 02000320483
Para agilizar la tramitación, puede enviar una copia de su ingreso o transferencia vía fax al 91 544 50 07 o por e-mail a: [email protected]."
;
$texto .="
NUMERO DE PEDIDO: $idmailpedido"
;}
//ENVIANDO A CLIENTE
if ($empresa != ""){
mail($email2$asunto2$texto $aviso$from);
$fecha date(Ymd);
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$texto .= "
Hay una copia de seguridad de este pedido que debe eliminar desde su panel de control: http://www.quatromuebles.com/admin"
;
}
else {
header("location:http://www.quatromuebles.com/conregistro.php");
}
//ENVIANDO AL ADMIN
if ($empresa !="")  {
mail($email$asunto"DATOS CLIENTE" $texto$from);
$result mysql("$database_localhost""delete From carrito where cliente = $userid",
    
$localhost);}
 else {
header("location:http://www.quatromuebles.com/conregistro.php"); }
}
else{
header("location:http://www.quatromuebles.com/conregistro.php"); } 
es que si yo visito el carrito-ok4.php directamente des del navegador me rediriga a conregistro.php
pero cuando lo hace un robot (google, yahoo...) me genera un pedido en blanco
  #4 (permalink)  
Antiguo 25/08/2008, 04:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: me lo procesa aun estar el valor en blanco

si quieres eso antes del if realiza el header location, con una variable de sesion que se genere cuando introduzcas el usuario por el form. Así creo que no podrá acceder al cuerpo del if(userid)

if(!isset(variable_sesion){
header("location:http://www.quatromuebles.com/conregistro.php");
exit;
}

debes realizarlo al principio ya que así te aseguras que no se haya imprimido nada y por lo tanto el header falle, además consigues que desde el comienzo no acceda a la página.

Espero que resulte. Un saludo
  #5 (permalink)  
Antiguo 25/08/2008, 07:45
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: me lo procesa aun estar el valor en blanco

no entiendo mucho lo que quieres decir... es que yo de php domino mas bien poco...
  #6 (permalink)  
Antiguo 26/08/2008, 01:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: me lo procesa aun estar el valor en blanco

Haber empezado por ahí.

este código lo que hace es comprobar si existe una variable de sesión que se debe crear una vez te loges ($_SESSION['nombre'], por ejemplo).
si no está creada ( if(!isset(variable_sesion)) lo que hace es apuntar a la url que tú le indiques (header("location: http://www.quatromuebles.com/conregistro.php");). Para que se redireccione sólo tienes que poner un exit;.

Así si alguien accede a tu página se comprobará si esta variable existe (para ello debe haberse logado), sino, se redireccionará a la página que haya escrita después de "location:" ; si lo está, seguirá cargándose la página.

espero que te sirva. Un saludo
  #7 (permalink)  
Antiguo 26/08/2008, 02:04
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: me lo procesa aun estar el valor en blanco

la variable de sesion seria

Código PHP:
$userid $_SESSION['privado']; 
?
  #8 (permalink)  
Antiguo 26/08/2008, 02:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: me lo procesa aun estar el valor en blanco

Pues el código quedaría así:

if(!isset($_SESSION['privado']){
header("location:http://www.quatromuebles.com/conregistro.php");
exit;
}
  #9 (permalink)  
Antiguo 26/08/2008, 02:42
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: me lo procesa aun estar el valor en blanco

he hecho lo que me digiste y me da el error

Parse error: syntax error, unexpected '{' in /home/quatromu/public_html/carrito-ok4.php on line 12

en la linea 12 tengo
Código PHP:
 if(!isset($_SESSION['privado']){ 
  #10 (permalink)  
Antiguo 26/08/2008, 02:47
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: me lo procesa aun estar el valor en blanco

Cita:
Iniciado por ^engonga^ Ver Mensaje
hola tengo un fichero que me procesa un pedido

Código PHP:
<?
include ("admin/localhost.php");
$pago $_GET["pago"];
if (
$pago == "2")
{
    
header("Location: carrito-ok2.php");
    
end;
}
foreach (
$_GET as $nombre_campo => $valor)
{
    
$asignacion "\$" $nombre_campo "='" $valor "';";
    eval(
$asignacion);
}
$userid $_SESSION['privado'];
if (
$userid != "") {
$result mysql("$database_localhost""Select * From opciones where id = 1"$localhost);
$row = @mysql_fetch_array($result);
$certificado $row[certificado];
$asegurado $row[asegurado];
$result mysql("$database_localhost""Select * From empresas where id = '$userid'",
    
$localhost);
$row = @mysql_fetch_array($result);
$empresa $row[nombre];
$email2 $row[email];
$direccion $row[direccion];
$localidad $row[localidad];
$provincia $row[provincia];
$cp $row[cp];
$telefono $row[telefono];
$dni $row[dni];
$email "[email protected]";
//$email="[email protected]";
$from "From: QuatroMuebles.com<[email protected]>\r\nReply-To: [email protected]\r\nReturn-path: [email protected]\r\n";
$asunto "Nuevo pedido desde la web";
$asunto2 "Copia de su pedido a QuatroMuebles.com";
$texto "
Nombre: $empresa
DNI: $dni
Email: $email2
Dirección: $direccion
Localidad: $localidad
Provincia: $provincia
Código Postal: $cp
Teléfono: $telefono
DATOS DEL PEDIDO
"
;
$total1 "0";
$result mysql("$database_localhost""Select * From carrito where cliente = $userid",
    
$localhost);
while (
$row = @mysql_fetch_array($result))
{
    
$cantidad $row[cantidad];
    
$prodid $row[producto];
    
$id $row[id];
    
$result2 mysql("$database_localhost""Select * From muebles where id = $prodid",
        
$localhost);
    
$row2 = @mysql_fetch_array($result2);
    
$nombre $row2[nombre];
    
$precio number_format($row2[pvd], 2","".");
    
$total $row2[precio] * $cantidad;
    
$total2 number_format($total2","".");
    
$total1 $total1 $total;
    
$texto .= $cantidad " " $nombre " (" $total2 ")
"
;
}
$total1 $total1 $certificado;
$envio "Gastos de envío: " $certificado " Euros";
$texto .= "
Forma de Envío: $envio
TOTAL PEDIDO: " 
number_format($total12","".");
$fecha date(Ymd);
if (
$empresa != ""){
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$aviso "
Para completar su pedido, deberá realizar un ingreso o transferencia bancaria por el total de su pedido (indicando el número de éste: $idmailpedido) en alguna de las siguientes cuentas:
La Caixa: 2100 2127 11 02000320483
Para agilizar la tramitación, puede enviar una copia de su ingreso o transferencia vía fax al 91 544 50 07 o por e-mail a: [email protected]."
;
$texto .="
NUMERO DE PEDIDO: $idmailpedido"
;}
//ENVIANDO A CLIENTE
if ($empresa != ""){
mail($email2$asunto2$texto $aviso$from);
$fecha date(Ymd);
mysql("$database_localhost""insert into pedidos (pedido,fecha) values ('$texto','$fecha')");
$idmailpedido mysql_insert_id();
$texto .= "
Hay una copia de seguridad de este pedido que debe eliminar desde su panel de control: http://www.quatromuebles.com/admin"
;
}
else {
header("location:http://www.quatromuebles.com/conregistro.php");
}
//ENVIANDO AL ADMIN
if ($empresa !="")  {
mail($email$asunto"DATOS CLIENTE" $texto$from);
$result mysql("$database_localhost""delete From carrito where cliente = $userid",
    
$localhost);}
 else {
header("location:http://www.quatromuebles.com/conregistro.php"); }
}
else{
header("location:http://www.quatromuebles.com/conregistro.php"); }
?>
lo que he hecho es poner esto

Código PHP:
if ($userid != "") { 
tanto con userid como $empresa

para que si el valor viene en blanco no me procese el pedido.

el problema viene de que cuando pasa el robot de cualquier buscador me genera un pedido en blanco y con el if no me lo para


alguien sabe?
cambia estas dos lineas:
Código PHP:
$userid $_SESSION['privado'];
if (
$userid != "") { 
por estas:
Código PHP:
$userid trim($_SESSION['privado']); // añadimos trim();
if ($userid != '') { // <--- son comillas simples ' 
  #11 (permalink)  
Antiguo 26/08/2008, 02:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: me lo procesa aun estar el valor en blanco

cambia :
if(!isset($_SESSION['privado']){
por
if(!isset($_SESSION['privado'])){
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 21:19.