Ayuda con php , borra tabla de DB tras INSERT *

Iniciado por JazzTA, 9 Septiembre 2019, 14:29 PM

0 Miembros y 1 Visitante están viendo este tema.

JazzTA

Hola a todos. Parece que no recuerdo mi vieja cuenta, me hice una nueva, solicité email por usuario y me lo mandaron pero ninguno de mis emails recibió nada - ni en spam-

Por favor ayuda y seriedad, gracias.
Me llamo David, estoy en Madrid, y rima xD. Estoy haciendo para mi una web donde poner a la vista y a la venta unos productos únicos artesanales, la tengo al 98%. La estoy haciendo a base de tutoriales de aquí y haya. Yo no tengo ni idea de html, ajax, php, y MSQL, (bueno, ahora algo) y nada, me puse a seguir los videos de un tipo y ya casi la tengo acabada. <<os advierto que me suelo esplayar mucho>>, para que no se me diga no entiendo!!... o lo que es algo parecido, se me escuche.

Decía que ya casí la tengo acabada pero si eliges un producto para agregar al carrito al ser artesanía quiero que desaparezca del catálogo <<no hay 2 productos iguales, no podré entregar 3, 5, o 17, son únicos o muy parecidos>> entonces para evitar esto se me ocurrio que el usuario al loguearse para comprar << si no no hay carrito>> vaya al catalogo, elija productos y al añadir a un <<carrito temporal>> el producto este desaparezca del catálogo x su id etc etc... y así me evito que añadan 324.

¿Por qué así?... Ya miré el borrar del carrito uno a uno, o por un select <<que no encontré php para hacerlo>> pero claro, si el producto sigue ahí en catálogo disponible sigo con las mismas, y ya no lo tengo y el/los cliente/es si se antoja/an lo compra y luego no puedo satisfacerle. Decidí entonces pues subir los productos que tenga y si se añade al carrito que se borre... ooooh y en todo caso << y esto se me ocurre ahora>> que aparezca velado (nueva imagen en tabla preproductos x ejemplo) y un vendido, pero para que tanto lio.   Acaaaabo ya!!

¿Como os pongo el php para que me ayudeis/reviseis si sois tan amables por qué no me borra los productos?, veo ahí arriba una casilla Código GeSHi, voy a probar jijiij...

// Esto creo es una funcion global para variables de sesion de usuarios... o algo así... ¿ya declaradas podriamos decir, GetSQLValueString? obtener los valores de cadena SQL ? yo que sé...
Código (php) [Seleccionar]
<?php require_once('../Connections/sbrweb.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}
$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}



// y ahora el otro trozo, dónde se comprueba qué viene, se suma lo que venga, se mete al basket temporal tblbasket_temp lo que venga de tabla_productos y <<mi código para borrar los productos>>, que no borra por cierto xDD $borrar_tablas ...

Código (php) [Seleccionar]
 return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
 $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

$hay_articulosql=sprintf("select count(*) from tblbasket_temp where idUsuario =%s and idProducto =%s",
                                          GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
  GetSQLValueString($_GET['recordID'], "text"));

$suma_articulosql=sprintf("update tblbasket_temp set intCantidad = intCantidad +1 where idUsuario =%s and idProducto =%s",
                                          GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
  GetSQLValueString($_GET['recordID'], "text"));

$insertSQL = sprintf("INSERT INTO tblbasket_temp (idUsuario, idProducto, strImagen, intCantidad, dblPrecio) select %s, %s, %s, 1, dblPrecio from tabla_productos  where idProductos =%s",
                                          GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
                                          GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"));
 
$borrar_tablas = sprintf("delete from tabla_productos (strNombre, strImagen, strDescripcion, dblPrecio) where idProductos=%s",
                                          GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
                                          GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"),
  GetSQLValueString($_GET['recordID'], "text"));
 mysql_select_db($database_sbrweb, $sbrweb);
 
 $result = mysql_query ($hay_articulosql, $sbrweb) or die(mysql_error());
 $recuento = mysql_fetch_row ($result);
 if ($recuento[0]==0 or is_null ($recuento[0])) {
   
 
 $Result1 = mysql_query($insertSQL, $sbrweb) or die(mysql_error());
 }
 else { $Result1 = mysql_query($suma_articulosql, $sbrweb) or die(mysql_error());
 }
 
 $insertGoTo = "basket.php";
 if (isset($_SERVER['QUERY_STRING'])) {
   $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
   $insertGoTo .= $_SERVER['QUERY_STRING'];
 }
 header(sprintf("Location: %s", $insertGoTo));

?>


Ladriiiii llo!! ¿Que falla? No me da fallos SQL de la DB o sea qué... y los productos entran a tblbasket_temp pero no se borran/delete de la tabla_productos...

Ta luegooo... :silbar:




Mod: Los temas sobre PHP van al subforo de PHP.
 

#!drvy

Hola,

- Te aconsejo que no uses mysql_. Esta obsoleto. De hecho si te vas a la documentación de cualquiera de esas funciones, verás un aviso en rojo bien visible:
https://www.php.net/mysql_query


- El typecheck que tienes tampoco es muy seguro, además de que no lo usas de forma correcta pues sea lo que sea, le estas diciendo que lo trate como texto. De todos modos, te lo puedes ahorrar usando sentencias preparadas.
https://www.php.net/manual/es/mysqli.quickstart.prepared-statements.php


- $_SERVER['PHP_SELF'] no es seguro de por si. Veo que aplicas htmlentities al QUERY_STRING pero no al PHP_SELF. Ahí tienes una entrada de XSS.


- Dicho esto, el DELETE si te deberia de dar un error. Le estas pasando demasiados parámetros al sprintf (solo le pides uno de tipo string (%s) y le pasas 5 y la sentencia DELETE no acepta nombres de columnas pues borra todo el row que coincida. Además al unico parametro que le pides, le estas pasando el MM_idUsuario en vez de el recordID.

Código (php) [Seleccionar]
$borrar_tablas = sprintf("DELETE FROM tabla_productos WHERE idProductos=%s", GetSQLValueString($_GET['recordID'], "text"));


Ten en cuenta que esto de por si representa una vulnerabilidad pues el "visitante" puede ir borrando productos los cuales al final no va a comprar. Deberías en vez de borrarlos cambiar su estado.


En general te recomendaría pasar un tutorial de PHP actualizado, el código que veo esta escrito muy a lo legacy.. hablando de versiones de 4.X o 5.x... ten en cuenta que PHP ya está en la 7.3 stable y en nada viene la 7.4.


Dicho esto, he visto que has intentando entrar con un usuario llamado "Drums". ¿Ese es el que no recuerdas? El proveedor de correo que tiene puesto es latinmail.com por si te sirve de algo. En general su correo es: drums_***@latinmail.com (oculto parte del correo por razones de privacidad).


Saludos

JazzTA

Hola Gracias amigo, te cuento...
Uso Xampp en local y es versión php 4.5 , hace una semana me instale el de la versión 7.3 para el tema msqli y la página no iba, lógico. Me miré un manual para migrar toda la web y me puse, pero claro, yo no sé de esto, y la página tiene metido código de todos lados, y una URL iba y otra no. El tutorial general de donde hice la mayoría es del 2010 y se hacía con msql y bueno me puse me puse y da su curro, ya no voy a borrarla claro. La web la hice en 2012 o por ahí para otro proyecto, ahora tengo otro y la he remozado xD.
Estoy contestando con el móvil, Muy chico todo, estoy viendo la vuelta ciclista desde VCL con un noeelect USB dvbt y si enciendo la antena para usar y navegar desde pc no hay bicis jajaja, luego entro y leo tu código y veo donde corregir y/o te/os cuento.
PD: Sí, suelo usar Drums de Nick para otros foros, por eso meti ese y el sisyema dijo email enviado, pero debe ser a otro Drums de latinoamerica.
Gracias!!

MinusFour

Cita de: JazzTA en  9 Septiembre 2019, 15:35 PM
Hola Gracias amigo, te cuento...
Uso Xampp en local y es versión php 4.5

Lo que más da miedo de todo esto, es que la última versión de la 4.x es 4.4.9 y tu aquí tienes la 4.5 xD. Ya en el 2010 esto estaba más que muerto.

JazzTA

#4
Vaya, contesté antes pero no debí darle bien a enviar.
Minusfour era para redondear el php xD
Nada cambie la consulta Delete a $GET redordID texto )); y sigue sin eliminar datos.
Ahora atletismo en la TDT, no puedo enchufar la Realtek :/
Luego os comento...cuento...




Buenas again.
A ver, os cuento. Mi web,entras al index.html, ahí hay divs, <h3> y tal y tal para ver de qué va la web, luego está la tienda, bien esta es un catálogo, unos productos y un carrito. Para poder añadir al carrito hay que registrarse para <<evitar>> pesaos... Vale ahora a la pregunta...
Veo en mi catálogo una variable $varCategoria_DatosProductos  y un SELECT * FROM de la tabla_productos WHERE etc etc... Os pongo captura si puedo... Eso saca los productos por  categoría a la página catálogo, (que es precisamente donde quiero que se borren si se reservan/compran, si no se comprar recuperar todo luego con otra consulta, Select from tablatemporal, etc..
Si llamo/escribo esa variable en DELETE FROM donde quiero que borre, que está en basketinn.php, ¿funcionará? No sé cómo interactúan las variables entre páginas, si cada una las suyas o si se pueden comunicar.
En tal caso que tendría que poner, ¿todo el recuadro en verde o algo más de todo lo rojo.
Gracias!!
Foto en Drive...
https://drive.google.com/file/d/1-BDfgbBbnCtt0fn3Cf_zA5zUDnd5nrAd/view?usp=drivesdk




Hola.
Vaya no tengo ninguna respuesta/ayuda desde ayer, creo haber entrado con buen pie... en fin insisto un poco más...

Un poco más de información para ayudaros a que me ayudeis, se que es importante. Uso Dreamweaver CS6 para trabajar las páginas, hacer juegos de registros etc etc... si me vas a contar que el CS6 esta viejo y patatin patatan, relajate, ya lo supongo, vayamos a borrar/mover datos de una tabla a otra usando php...

Tengo este código de inicio en mi pagina categories.php, os pongo todo aunque sé que la miga esta en la $varCategoria_DatosProducto, con esta variable saco/llamo a los productos por su categoría, << creo>>...

Código (php) [Seleccionar]
<?php require_once('../Connections/sbrweb.php'); ?>
<?php  
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}


$varCategoria_DatosProductos "0";
if (isset(
$_GET["categ"])) {
  
$varCategoria_DatosProductos $_GET["categ"];
}
mysql_select_db($database_sbrweb$sbrweb);
$query_DatosProductos sprintf("SELECT * FROM tabla_productos WHERE tabla_productos.intCategoria = %s"GetSQLValueString($varCategoria_DatosProductos"int"));
$DatosProductos mysql_query($query_DatosProductos$sbrweb) or die(mysql_error());
$row_DatosProductos mysql_fetch_assoc($DatosProductos);
$totalRows_DatosProductos mysql_num_rows($DatosProductos);
?>


ya luego monto el front end para que saque todo a la página categorías del catálogo general.

sacos los datos fecha, usuario etc si está logueado el cliente

Código (php) [Seleccionar]

<?php echo date('F jS\, Y \a\t h:i a');?></div>
<div class="author"> <a href="#"><?php include("../includes/Elusuario.php"); ?> <!--?php include("../includes/funciones.php"); ?--> </div>
<div class="category"> Category: <a href="Catalog.php">Catálogo</a></div>
<div class="category">Tag: <a href="../taller/blog.php">Blog</a></div>
<?php if ((isset($_SESSION['MM_username'])) &&($_SESSION['MM_username']!= ""))
 {
?>

     
<?php }
else 
{
?>

<div class="category"><a href="../Clientes/Logueo.php" >Entrar </a></div>

<?php 
}?>



y muestro los productos de esa categoría

Código (php) [Seleccionar]
<?php do { ?>
<div class="productos">
<span class="boldlink"><?php echo $row_DatosProductos['strNombre']; ?></span><br>
<a href="Products.php?recordID=<?php echo $row_DatosProductos['idProductos']; ?>"><img src="../images/fotosserver/<?php echo $row_DatosProductos['strImagen']; ?>" width="175" ></a><br>      
<span class="boldlink">Precio:</span><?php echo $row_DatosProductos['dblPrecio']; ?>€ </div>
<?php }
while
(
$row_DatosProductos mysql_fetch_assoc($DatosProductos)); ?>


<?php
mysql_free_result
($DatosProductos);
?>



si el cliente está logueado y da click a un producto se abre una nueva página donde ya podrá comprar ese producto

Código (php) [Seleccionar]

<img src="../images/prettyPhoto/fotosserver/<?php echo $row_DatosProducto['strImagen']; ?>" width="100%"></div><br>

<div class="user_box">Descripción:<?php echo $row_DatosProducto['strDescripcion']; ?></div>

<p class="user_box2">Precio: <?php echo $row_DatosProducto['dblPrecio']; ?>€.</p>

<?php if ((isset($_SESSION['MM_username'])) &&($_SESSION['MM_username']!= ""))
{
?>


<p><a href="basketin.php?recordID=<?php echo $row_DatosProducto['idProductos']; ?>" class="panelusuario">Añadir compra</a>
<a href="Catalog.php"class="panelusuario">Volver al Catálago</a></span></p>

<?php }

else 

{
?>


<h4>Puedes comprar sin registrarte mandandome un<a href="../Clientes/contacto.html">mensaje</a></h4>
<h5>Si quieres comprar desde la tienda online <a href="../Clientes/Elformulario.php"> Regístrate </a> y/o <a href="../Clientes/Logueo.php"> Entra</a> si ya eres usuario<br />
<a href="Catalog.php">Ir al Catálogo</a></h5>
<?php 
}
?>



como veis todo eso va a basquetin.php que es donde tengo todo lo que puse ayer y donde quiero implementar el borrar/mover del catálogo los productos añadidos al carrito por ese usuario (<<que básicamente es la pregunta que le hago a google y que bueno imaginaos, todo respuestas wooCommerce, prestashop, los que hacen caja ahí bien arriba>>)...

no creo que sea muy dificil pero si no sabes.. ¿que hago una variable nueva para el delete, llamo a otra de esas que se ven en todo el código que puse? se que estoy a un pedo de acabar esta engorrosa situación. ¡¡Tírame un cable!! ya lo monto yo.

PD: Está muy bien que me mandeis a sitios para leer y aprender y advertirme oye mira, to, ta mal, etc etc... pero no voy a aprender, me dejaré atras cosas, y soy de los de los de, o lo se tó o no se náh.. y ahora estoy a arreglar esto y acabar mi mierdawé!!

Abrazos... Chinpuuunn!!





Mod: No hacer triple post. Usa el botón "Modificar".

#!drvy

Yo creo que ya te he mencionado el porque no debería funcionar tu consulta de DELETE en mi primera respuesta. Ahora que lo vuelvo a mirar, ni siquiera ejecutas la consulta (al menos en el código que tienes puesto), solo la construyes con sprintf.


Has venido a un foro dedicado a la seguridad, con un código obsoleto y vulnerable y se te estan dando consejos para hacer las cosas bien pero no te interesan.. pues no entiendo a qué viene lo de buscar ayuda alguna... no te lo tomes a mal, pero eres en gran parte la razón por la que PHP tiene tan mala fama con la seguridad y el rendimiento.

Si quieres ayuda, tienes que estar dispuesto a aprender y corregir.. al menos en este foro.

Saludos

JazzTA

Cita de: #!drvy en  9 Septiembre 2019, 15:14 PM
Hola,
Código (php) [Seleccionar]
$borrar_tablas = sprintf("DELETE FROM tabla_productos WHERE idProductos=%s", GetSQLValueString($_GET['recordID'], "text"));
Saludos
Si te refieres a esto y a que yo lo tengo mal y debería ser así (es una suposición mía) contesté ayer que lo corregí puse eso y no funciona.

Es por esto que dije que no tenía más respuestas desde ayer.
Oye de verdad yo no he entrado aquí para andar batallando si dije si no dije, si quieres aprender o no etc... ya dije y bien clarito ayer que me explico sobradamente. Ahora te vas y te lees todo mi post y lo meditas.
Yo no he entrado aquí a dar la murga a nadie y se de qué va este foro desde hace mucho. forosdelweb está cerrado y en desarrollo web no quiero entrar.
Tómatelo tu ahora como quieras, usa tus poderes para bloquearme o lo que quieras o léeme otra vez y trágate el orgullo. Tu código tampoco arreglo nada y tengo pensado arreglar toda mi página y hacerla segura todo lo que pueda, está dicho más arriba, pero cuando acabe está fase. Si es que no me hacéis abortar antes con tanto  "filtrito" psique. Que yo no quiera aprender todo el php del mundo no significa que no quiera aprender, significa que no me voy a hacer catedrático de php, y cuando me interesa algo lo hago a fondo, desde abajo a arriba. No tengo tiempo para eso ahora, pero si aprendo, así es que un respeto, al menos tanto como el que yo he ofrecido, terminó mi defensa y espero me expliquéis por que sigue sin ir el arreglo. Ya hay mucha info.
Con lo que me gusta a mí el buen rollo coña!!

JazzTA

Buenas de nuevo.

He avanzado mucho, aprendido algo, no todo, os pongo una muestra para pasar un rato y también seguir una pregunta aunque me temo que habra mucho codigo implicado y yo no sabria bien asociarlo (recordad/sabed; de esto no tengo ni idea/estudié) lo hago por ahorrarme una pasta en una web, por aprender, entretenerme y determinación cuando (me cachis esto no sale, ¿por qué?).
Bien, actualicé xampp, no a la última versión, pero al menos tiene php7.
Comencé a arreglar/migrar código de mi página insegura y obsoleta escrita en php y MySQL.
Empecé con la conexión, está en una carpeta a la que voy ligando cada vez que hay que conectar para no escribir código, enlazando con require_once.
Creo (no lo sé de memoria pero es fácil buscarlo) que la tengo/hago procedimental.
Tras declarar host, usuario, contraseña y db conecto.
Código (php) [Seleccionar]
//INICIAMOS CONEXION.
  $conexion = new mysqli($hostname_db, $username_db, $password_db);

Una vez arreglé esto me puse con lo que entiendo es mas vulnerable a ataques, el registro y el login.
¿Que es lo malo por decir así? Que yo no tengo un dominio/control claro de donde vienen las cosas, de por qué pasan o por qué y cuando interactuan unas con otras, entiendo que todo podría ser mas fácil si yo supiera, y si el codigo y las páginas estuvieran mejor organizadas, pero seguí los pasos de uno que sabe poco (aunque va de que sabe la tira), y luego pedí ayuda, me escribieron código a su parecer/entender y luego he ido copiando y pegando código de mini manuales de aquí y alla de la red, así es que a pesar de que lo voy arreglando, no se de donde viene, por qué pasa y mil cosas, eso es lo malo.

Esto viene por que tengo una tontería, una variable no declarada que antes "funcionaba" y ahora no; pero antes un poco de buenas prácticas y orgullo positivo, muestra de parte del código corregido y securizado (no del todo seguro se sabe).

Código (php) [Seleccionar]
/*Declaramos las variables $servidor, $usuario,$password y  $sdb (base de datos). Para Localhost tengo lo siguiente:*/

        //Configuracion.
        $hostname_db = "localhost";
$database_db = "pruebadb";
        $username_db = "root";
        $password_db = "";

$conexion = new mysqli($hostname_db, $username_db, $password_db);

mysqli_select_db($conexion, $database_db);
       
//MONTANDO SENTENCIAS PREPARADAS <br />
             // Comprobar conexion
if($conexion->connect_error){
    die("La conexión ha fallado, error numero " . $conexion->connect_errno . ": " . $conexion->connect_error);
}

$stmt = $conexion->prepare("INSERT INTO users_temp (nombre, usersTemp, password, email, fecAlta, txt_Activ) VALUES (?,?,?,?,?,?)");
$stmt->bind_param('ssssss',$nombre, $usersTemp, $password, $email, $fecAlta, $txtActiv);
$stmt->execute();
        $stmt->close();

// EJECUTANDO SENTENCIA PREPARADA
if ($stmt = $conexion->prepare("SELECT nombre, usersTemp, password, email, fecAlta, txt_Activ FROM users_temp")) {
    $stmt->execute();
    // Vinculamos variables a columnas
    $stmt->bind_result($nombre, $usersTemp, $password, $email, $fecAlta, $txt_Activ);
    // Obtenemos los valores
    while ($stmt->fetch()) {
        printf("%s %s\n", $nombre, $usersTemp, $password, $email, $fecAlta, $txt_Activ);
    }
    // Cerramos la sentencia preparada
    $stmt->close();
}
}
//****************************************


Bien como decía antes, para el registro de usuarios tengo 3 páginas php y vinculadas /includes/ entre ellas y la leche, que lio.
Lo que hace el registro en meter en una tabla temporal de la db los datos, ahí va la clave tipica que se manda para activar la cuenta, una vez se activa la cuenta el usuario pasa a la nueva tabla usuario_validados y se borrán los datos de la tabla temporal.
Me parece que el formulario de registro esta muy bien contruido, con su lista blanca de permitidos, escapando caracteres, obligando a que sean de tipo etc etc... si hiciera falta los pondría, y a todo esto me falta implementar el reCaptcha que por ahora en local no doy con como integrarlo.

Bien voy al lio porque si no va a parecer esto no se....

He ido resolviendo warnings, Fatal errors etc etc de las pruebas de registro, pero sigo sin poder meter a la tabla temporal datos de los campos del from
¿que falla ahora? pues al parecer una variable que hay declarada dentro de un php con un if, es esta...
Código (php) [Seleccionar]
<?php if ($respuesta == 1?>

Creo entender que eso dice, si la respuesta es igual a 1 no insertes nada en la db ("creo").
El caso que me arroja un notice de que la variable no está declarada, como esto tiene vinculado mucho codigo que depende uno de otro busque Ctrl+f la variable $respuesta y no está por ningun lado, solo en registro.php que es donde me avisa el Notice.

¿Cómo dónde y con qué parametros la declaro?

¿Cómo veis las mejoras de seguridad? A lo mejor para la otra pregunta voy a otro sitio, pero buscando volvi a llegar aquí.

Si necesitais saber/ver mas código vinculado/incluido lo pego.

PD: ¿No hay un [spoiler][/spoiler] para meter el codigo y salvar scroll?

Saludos .