Necesitod e nuevo ayuda con un código.

Tengo este código:
<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$sql= "mysql_query ('SELECT * FROM amigos where nombre=$_POST[name]')";
if (!$sql) {
$hora=date("H");
$minuto=date("i");
$segundo=date("s");
mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$_POST[name]', '$hora', '$minuto', '$segundo')");
echo "El ID <strong>" . $_POST["name"] . "</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
  } else {
	echo "<script>JavaScript:alert('Usuario ya registrado')</script>";
	echo "<a href='index.php'>Click aqui para ir a la p&aacute;gina principal.</a>";
	}
	}
  ?>

Lo que hace es registrar un id, pero puse una medida de seguridad minima, que si el id ya estaba registrado, me saliese ese aviso (echo "<script>JavaScript:alert('Usuario ya registrado')</script>";)
Pero ponga lo que ponga simepre me dice que ya está registrado. Seguramente será algo que falte, pero necesito vuestra ayuda de nuevo ;) .

Muchas gracias de antemano ;)

PD: Si encontrais algún fallo más, avisarme porfavor ;)
Yo lo haria de otra forma , pero me he dado cuenta que tienes un error dentro de la variable $sql y es que pusiste el mysql_query dentro de comillas y no debe de tener comillas o si no no funciona

Saludos
Hmm Me dices como lo harias tu? Por que me he dado cuenta de que no funciona :P

PD: Necesito que sea SUPER seguro, anti cosas raras ;) ¿Podrías intentarlo?

PD: Al hacerlo me sale una hora que no corresponde. Yo quiero que me salga la hora del meridiano 0, es decir hora de Madrid, España.

Me ayudas ? :)
Respecto a la hora, tienes que añadir esto (ponlo al principio del código mejor)

[LEFT][COLOR=#0000BB][FONT=Consolas]date_default_timezone_set[/FONT][/COLOR][COLOR=#007700][FONT=Consolas]([/FONT][/COLOR][COLOR=#DD0000][FONT=Consolas]'Europe/Madrid'[/FONT][/COLOR][COLOR=#007700][FONT=Consolas]);[/FONT][/COLOR][/LEFT]

Con lo del ID, prueba esto:

<?php

date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST[name];
$nombre = strip_tags($nombre);

// Ahora buscamos en la base de datos si el usuario ya 
$buscar = mysql_query("SELECT name FROM amigos WHERE name='$nombre'"); 

// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 

if(mysql_num_rows($buscar)>0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
?>

Prueba eso y si te funciona, avisa y lo intentamos adaptar a tu código :)
Doodleo escribió:Respecto a la hora, tienes que añadir esto (ponlo al principio del código mejor)

[LEFT][COLOR=#0000BB][FONT=Consolas]date_default_timezone_set[/FONT][/COLOR][COLOR=#007700][FONT=Consolas]([/FONT][/COLOR][COLOR=#DD0000][FONT=Consolas]'Europe/Madrid'[/FONT][/COLOR][COLOR=#007700][FONT=Consolas]);[/FONT][/COLOR][/LEFT]

Con lo del ID, prueba esto:

<?php

date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST[name];
$nombre = strip_tags($nombre);

// Ahora buscamos en la base de datos si el usuario ya 
$buscar = mysql_query("SELECT name FROM amigos WHERE name='$nombre'"); 

// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 

if(mysql_num_rows($buscar)>0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
?>

Prueba eso y si te funciona, avisa y lo intentamos adaptar a tu código :)


Modifico el codigo de Doodleo y le añado "super seguridad"

<?php

date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$buscar = mysql_query("SELECT name FROM amigos WHERE name='$nombre'"); 

// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
?> 
Listo igual llevo prisa y no se si funcione el codigo de Doodleo , puedes probarlo Saludos!
Muchas gracias a los dos. Siguiendo esto, me sale un error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a5568601/public_html/verificacion.php on line 29

Y la linea 29:
$nbuscar = mysql_num_rows($buscar);

Ademas ponga lo que ponga, me dice que se ha ha añadido.

Recuerdo el código:

<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT name FROM amigos WHERE name='$nombre'"); 

// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
	}
  ?>

A ver que podeis hacer :P
Oki, prueba a imprimir la variable $buscar y dinos que sale (Fijo que sale un Resource id #XX, siempre me pasa xD)
$buscar = mysql_query("SELECT name FROM amigos WHERE name='".$nombre."'");

Tenias un error con las comillas saludos!
Error solucionado, pero ahora me ocurre otro:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a5568601/public_html/verificacion.php on line 28

Linea 28:
$nbuscar = mysql_num_rows($buscar);
Claro, sin problema:
<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT name FROM amigos WHERE name='".$nombre."'"); 
// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
	}
  ?>
amm amigo creo que el error es que estas declarando mal la variable de la línea 23 que llamas en la línea 28, estas usando "" cuando debería ser {}
Quedando el código así

<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT name FROM amigos WHERE name='{$nombre}'"); 
// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
    }
  ?>
codomodragon escribió:amm amigo creo que el error es que estas declarando mal la variable de la línea 23 que llamas en la línea 28, estas usando "" cuando debería ser {}
Quedando el código así

<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT name FROM amigos WHERE name='{$nombre}'"); 
// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
    }
  ?>

Eso no tiene nada que ver [:(]

El error surge del SELECT name, es posible que tambien no exista la tabla amigos, o haya un error en la bd tambien prueba a verificar que exista todo en la bd , sin mas te dejo el ultimo codigo :

(Edito : me di cuenta y el error efectivamente esta en en el SELECT name, porque mas abajo en el INSERT INTO de mysql, tiene que el campo se llama 'nombre' y no 'name' , es un error que has de haber cometido en fin todo el codigo que te di esta bien , exepto que no existe el campo name cambialo por nombre y veras como funciona!

Te dejo el codigo final :

<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = $_POST["name"];
$nombre = htmlspecialchars($_POST["nombre"]);
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXXXXXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT nombre FROM amigos WHERE nombre='".$nombre."'"); 
// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
    }
  ?> 

Saludos!
Buah... yo y mis fallos tontos (Eso me pasa por copiar partes de códigos de otras páginas mias xD) Muchas gracias a todos, pero ahora, me sale SIEMPRE que el usuario ya esta registrado, ponga lo que ponga..... :S (Usando el código de SurKaiser) Ahora pruebao el código de comoddragon cambiando las variables malas :P
Edit--------------------
Muy bien, no funcionan niguna de las 2.. asi que me atrasé un poquito y vuelvo a tener este código:
	<?php
  require_once('recaptchalib.php');
  $privatekey = "XXXXXXXXXXXXXXXXXXXXXX";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    die ("El c&oacute;digo CAPTCHA es inv&aacute;lido, porfavor vuelve atr&aacute;s e intentalo de nuevo.<br/>" .
         "(reCAPTCHA ha dicho: " . $resp->error . ")");
  } else {
date_default_timezone_set('Europe/Madrid');

// Primero declaramos la variable del nombre recibido y le pasamos un filtro para añadirle seguridad
$nombre = htmlspecialchars($_POST["nombre"], ENT_QUOTES);

// Ahora buscamos en la base de datos si el usuario ya 
$connect=mysql_connect("mysql11.000webhost.com","a5568601_user", "XXXXXX");
mysql_select_db("a5568601_datos",$connect);
$buscar = mysql_query("SELECT name FROM amigos WHERE nombre='$nombre'"); 
// Aquí declaramos la hora, minutos y segundos...
$hora=date("H"); 
$minuto=date("i"); 
$segundo=date("s"); 
$nbuscar = mysql_num_rows($buscar);
if($nbuscar > 0) {
// Si el nombre de usuario existe... 
echo "<script>javascript:alert('Usuario ya registrado')</script>";
echo "<meta http-equiv='refresh' content='0;URL=solicitud.php'>";  
} else {
// Si el nombre de usuario no existe...
 mysql_query ("INSERT INTO `a5568601_datos`.`amigos`(`nombre`, `hora`, `minuto`, `segundo`) VALUES ('$nombre', '$hora', '$minuto', '$segundo')"); 
echo "El ID <strong>$nombre</strong> ha sido insertado con exito a las <strong>$hora</strong><i>:</i><strong>$minuto</strong><i>:</i><strong>$segundo</strong> (Horas:Minutos:Segundos) (<u>Horario internacional</u>)";
 } 
    }
  ?> 

Ahora todas las variables referidas al nombre están como nombre, y no name. Y creo que lo de la seguridad habia cosas duplicadas... asi que lo borré (Avisare si me equivoco) Bien, vallamos por partes:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a5568601/public_html/verificacion.php on line 26
Linea 26:
$nbuscar = mysql_num_rows($buscar);

También comentaros, que ponga lo que ponga, el usuario se puede meter en la bd (registrarse) pero su nombre sale como vacio. Os dejo por si acaso el formulario "madre":

<?php
echo "<form action='verificacion.php' method='post'>";
echo "Nombre: <input type='text' name='nombre' value='' /><br/>";
require_once('recaptchalib.php');
$publickey = "6Lc-9MkSAAAAAA2pzfEcFS-Ngdl4TdpIaparzW3C ";
echo recaptcha_get_html($publickey);
echo "<input type='submit' value='Enviar' name='Enviar' />";
echo "</form>";
?>

(Hay más en html, pero esa es la parte del formulario)

A ver que podemos sacar entre todos (Si alguien más se apunta a ayudarme pues mejor ;D )
No era necesario que lo borraras (lo del htmlspecialchars) , ahora te sale vacio porque otra vez en el mysql_num rows pones select name!! y es select nombre, en fin yo lo dejaria asi : mysql_query("SELECT * FROM amigos WHERE nombre='".$nombre."'");

Al igual nunca pusiste bien tu code si no ya lo hubiese resuelto hablo del sql de la bd, php , html todo lo relacionado

Saludos!