Ayuda formulario php

Ya he conseguido que no me de errores, pero no me lo valida.

He echo un nuevo registro sin js y por lo menos no me da errores, pero no cumple las reglas.

Gracias.

Un saludo
Si he creado uno nuevo igual que el anterior pero sin la validacin que se hace con dreamweaver, que la hace en js.

Ahora no falla como antes uese quedaba la pantalla en blanco, ahora si registra y si crea los archivos, pero no cumple las reglas de las funciones.

En el nombre usuario puedes hacerlo con un solo caracter, aunque la regla pone 6 caracteres, asi en todos y en la edad igual puedes poner 10 años y lo admite.

un saludo
ok ya vi mi error, es simple solo deves cambiar las validaciones por estas:

if(empty($nombreusuario) || !validar_usuario($nombreusuario)){
$error.="Nombre De Usuario Esta Vacio, Es Menor Ha 6 Caracteres O Contiene Espacios.<br>";
}

if(empty($password) || strlen($password)<=6){
$error.="Tu Contraseña Esta Vacia O Tiene Menos De 6 Caracteres.<br>";
}
$password = md5($password);

if(empty($email) || !validar_email($email)){
$error.="Tu Direccion De Correo Electronico No Es Valida.<br>";
}

if(empty($_POST['edad']) || !is_numeric($edad) || stristr($edad,".") || $edad<18 || $edad>100){
$error.="Error Tu Edad Debe Estar Entre 18 y 100 Años.<br>";
}

en realidad el error estaba en los If que la regla decia algo asi: Si $nombreusuario esta vacio Y validar_usuario() es falso y por eso seguia registrando ahora ha quedado asi:
Si $nombreusuario esta vacio O validar_usuario() Es falso.

Prueba y veamos que pasa.
Estoy comprobando y sigue sin cumplir lar normass de la función.

Estoy viendo que hay una cosa que no lo entiendo del todo y pudiese ser el error.

En las funciones.
/* Validar Usuario: Que Sea Mayor Que $longitud Y Que NO Tenga Espacios */
function validar_usuario($usuario,$longitud=6){ 
$tamano=strlen($usuario);  // y en esta igual
if($tamano>=$longitud && strstr(" ",$usuario)){
return true;
}else{
return false;
}
}

La variable $usuario no deberia de ser remplazada por $nombreusuario?. La variable $usuario no esiste en la pagina.

Si es el usuario, pero la variable es $nombreusuario

Si es asi en las demas funciones pasaria igual.

Gracias

Un saludo
Hola.

Lo he estado intentando cambiando la variable y no funciona, y la edad tampoco

Gracias un saludo
En las funciones hacer codigo independiente el nombre de las variables que le pasas son independientes al de la fucion misma.

Bueno He Realizado algunos cambios y algunas pruebasy todo funciona bien con los siguientes codigos:
Las pruebas las realice aqui: http://www.cctw.aportaciones.net/pruebas_validar_usuario_email_edad… donde puedes cambiar el valor de las variables y ver como cambia el resultado, las validaciones funcionan bien.

funciones.php

<?php
/*////////////////////////////////////////////
// Codigos Y Funciones Utilies En PHP       //
// Sitio Web: http://www.serverdns.us       //
// Soporte Tecnico: [correo eliminado]    //
////////////////////////////////////////////*/

/* Funcion Para Limpiar Las Variables De Codigo HTML */
function limpiar($variable){
$variable = htmlspecialchars($variable);
$variable = stripslashes($variable);
$variable = strip_tags($variable);
$variable = htmlentities($variable);

return $variable;
}

/* Funcion Para Validad Direcciones De Em@il */
function validar_email($email){
    $mail_correcto = 0;
    //compruebo unas cosas primeras
    if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!strstr($email,"'")) && (!strstr($email,'"')) && (!strstr($email,"$")) && (!strstr($email," "))) {
          //miro si tiene caracter .
          if (substr_count($email,".")>= 1){
             //obtengo la terminacion del dominio
             $term_dom = substr(strrchr ($email, '.'),1);
             //compruebo que la terminación del dominio sea correcta
             if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
                //compruebo que lo de antes del dominio sea correcto
                $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
                $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
                if ($caracter_ult != "@" && $caracter_ult != "."){
                   $mail_correcto = 1;
                }
             }
          }
       }
    }
    if ($mail_correcto==1){
       return true;
    }else{
       return false;
       }
}

/* Validar Usuario: Que Sea Mayor Que $longitud Y Que NO Tenga Espacios */
function validar_usuario($usuario,$longitud=6){
$tamano=strlen($usuario);
if($tamano>=$longitud && !strstr($usuario," ")){
return true;
}else{
return false;
}
}

?>


<?php
/*////////////////////////////////////////////
// Codigos Y Funciones Utilies En PHP       //
// Sitio Web: http://www.serverdns.us       //
// Soporte Tecnico: [correo eliminado]    //
////////////////////////////////////////////*/

include("config.php");
include("funciones.php");
$error="";
$ip=$_SERVER['REMOTE_ADDR'];
$date = date ("Y-m-d");
$nombreusuario=limpiar($_POST['username']);
$password=limpiar($_POST['password']);
$email=limpiar($_POST['email']);
$edad=limpiar($_POST['edad']);

// $name=limpiar($_POST['']);  // Esta Variable No se de donde la sacaras
/* Recogemos el resto de las variables que no habias recogido */
$nombre=limpiar($_POST['nombre']);
$apellidos=limpiar($_POST['apellidos']);
$provincia=limpiar($_POST['provincia']);
$comentario=limpiar($_POST['comentario']);
$website=limpiar($_POST['website']);
$es=limpiar($_POST['es']);
$busca=limpiar($_POST['busca']);

if(empty($nombreusuario) || !validar_usuario($nombreusuario)){
$error.="Nombre De Usuario Esta Vacio, Es Menor Ha 6 Caracteres O Contiene Espacios.<br>";
}

if(empty($password) || strlen($password)<6){
$error.="Tu Contraseña Esta Vacia O Tiene Menos De 6 Caracteres.<br>";
}
$password = md5($password);

if(empty($email) || !validar_email($email)){
$error.="Tu Direccion De Correo Electronico No Es Valida.<br>";
}

if(empty($edad) || !is_numeric($edad) || stristr($edad,".") || $edad<18 || $edad>100){
$error.="Error Tu Edad Debe Estar Entre 18 y 100 Años.<br>";
}

// conexion con el servidor mysql
$link = mysql_connect($server, $db_user, $db_pass) or die ("No se pudo conectar con mysql porque ".mysql_error());

// selecion de base de datos
mysql_select_db($database) or die ("No se pudo conectar con la base de datos porque ".mysql_error());

// comprobar si existe el usuario
$check = "select id from $table where username = '".mysql_real_escape_string($nombreusuario)."';";   // Cambiamos el $username por la Variable Correnpondiente
$qry = mysql_query($check)
or die ("No coinciden los datos porque ".mysql_error());
$num_rows = mysql_num_rows($qry);
if($num_rows != 0){
echo "<p><img src='objetos/logotipo2.jpg' width='330' height='100' /><img src='objetos/titulo2.jpg' width='433' height='79' /></p>";
echo "El nombre de usuario ya existe.<br>";
echo "<a href=registro.html>Intente con otro nombre</a>";
exit;
}else{
// insertar en la tabla
$insert = mysql_query("insert into $table values ('NULL', '$nombreusuario', '$password', '$name', '$nombre', '$apellidos', '$email', '$edad', '$provincia', '$comentario','', '$website', '$ip', '$date', '$es', '$busca')")
or die("No se pudieron insertar los datos porque ".mysql_error());
}
}else{
echo "Ocurrieron Los Siguiente Errores:<br>".$error;
}
?>
Lo siento lo he mirado lo he puesto igual y no me funciona, sigo pudiendo registrar el usuario con una sola letra, el email lo puedo registrar sin @ y poniendo .come, y la edad da igual la que se ponga, continua realizando el registro y crea los archivos de usuario, no da ningun error.

He mirado el ejemplo que me has puesto y esta bien, pero a mi no me sale eso

Me ha resultado raro por que como no entiendo, la vriable "$error" al crearla se deja en blanco y luego cuando se llama a la función, donde se la da el valor, se pone "$error.=.........." , el punto ese me perdia y pense que podria ser el error.

Yo entiendo por lo que he mirado por la red, cuando el resultado de la función es "true" el script continua y cuando es "false" se detiene el script, entonces si alguna función fuese "false" deberia de salir el valor de la variable "$error" y detenerse el script. pero no sucede asi.

Gracias y perdona por ser tan torpe

Un saludo
Bueno he conseguido que me muestre los errores.

Ocurrieron Los Siguiente Errores:
Nombre De Usuario Esta Vacio, Es Menor Ha 6 Caracteres O Contiene Espacios.
Tu Contraseña Esta Vacia O Tiene Menos De 6 Caracteres.
Nombre De Usuario Esta Vacio, Es Menor Ha 4 Caracteres O Contiene Espacios.
Nombre De Usuario Esta Vacio, Es Menor Ha 3 Caracteres O Contiene Espacios.
Error Tu Edad Debe Estar Entre 18 y 100 Años.
Nombre De Usuario Esta Vacio, Es Menor Ha 4 Caracteres O Contiene Espacios.
Nombre De Usuario Esta Vacio, Es Menor Ha 6 Caracteres O Contiene Espacios.

Pero sin embargo con esos errores continua el script y realiza el registro y crea los archivos de usuario. con lo que se haya puesto en el campo.

Aunque he tenido que cambiar algo para que me diese los errores.

exit;
}else{
// insertar en la tabla
$insert = mysql_query("insert into $table values ('NULL', '$nombreusuario', '$password', '$name', '$nombre', '$apellidos', '$email', '$edad', '$provincia', '$comentario','', '$website', '$ip', '$date', '$es', '$busca')")
or die("No se pudieron insertar los datos porque ".mysql_error());
}//eliminado
}else{//eliminado
echo "Ocurrieron Los Siguiente Errores:<br>".$error;
}

Por

exit; 
}else {

// insertar en la tabla
$insert = mysql_query("insert into $table values ('NULL', '$nombreusuario', '$contraseña', '$name', '$nombre', '$apellidos', '$email', '$edad', '$provincia', '$comentario','', '$website', '$ip', '$date', '$es', '$busca')")
or die("No se pudieron insertar los datos porque ".mysql_error());	 

echo "Ocurrieron Los Siguiente Errores:<br>".$error;
}
?>

No se si habria que dar un valor a la variable "$error" para que detubiese el script
El "echo" del "else" ultimo, creo que deberia de ir antes de insertar lo datos en la tabla y si hay errores detener el script.

Ahora como se hace eso?

Pues ni idea.

Un saludo
Bueno voy consiguiendo cosillas, ya he conseguido que no me cree los archivos de usuario, poniendo en las funcines un "exit" al final del "else", pero continua introduciendo los datos del usuario en la base de datos. El registro lo sigue realizando

Un saludo
efectivamente hay un if que omite al pegar el codigo con el que no trabaje y ya corregido el codigo queda asi:

<?php
/*////////////////////////////////////////////
// Codigos Y Funciones Utilies En PHP       //
// Sitio Web: http://www.serverdns.us       //
// Soporte Tecnico: [correo eliminado]    //
////////////////////////////////////////////*/

include("config.php");
include("funciones.php");
$error="";
$ip=$_SERVER['REMOTE_ADDR'];
$date = date ("Y-m-d");
$nombreusuario=limpiar($_POST['username']);
$password=limpiar($_POST['password']);
$email=limpiar($_POST['email']);
$edad=limpiar($_POST['edad']);

// $name=limpiar($_POST['']);  // Esta Variable No se de donde la sacaras
/* Recogemos el resto de las variables que no habias recogido */
$nombre=limpiar($_POST['nombre']);
$apellidos=limpiar($_POST['apellidos']);
$provincia=limpiar($_POST['provincia']);
$comentario=limpiar($_POST['comentario']);
$website=limpiar($_POST['website']);
$es=limpiar($_POST['es']);
$busca=limpiar($_POST['busca']);

if(empty($nombreusuario) || !validar_usuario($nombreusuario)){
$error.="Nombre De Usuario Esta Vacio, Es Menor Ha 6 Caracteres O Contiene Espacios.<br>";
}

if(empty($password) || strlen($password)<6){
$error.="Tu Contraseña Esta Vacia O Tiene Menos De 6 Caracteres.<br>";
}
$password = md5($password);

if(empty($email) || !validar_email($email)){
$error.="Tu Direccion De Correo Electronico No Es Valida.<br>";
}

if(empty($edad) || !is_numeric($edad) || stristr($edad,".") || $edad<18 || $edad>100){
$error.="Error Tu Edad Debe Estar Entre 18 y 100 Años.<br>";
}

if($error==""){
// conexion con el servidor mysql
$link = mysql_connect($server, $db_user, $db_pass) or die ("No se pudo conectar con mysql porque ".mysql_error());

// selecion de base de datos
mysql_select_db($database) or die ("No se pudo conectar con la base de datos porque ".mysql_error());

// comprobar si existe el usuario
$check = "select id from $table where username = '".mysql_real_escape_string($nombreusuario)."';";   // Cambiamos el $username por la Variable Correnpondiente
$qry = mysql_query($check)
or die ("No coinciden los datos porque ".mysql_error());
$num_rows = mysql_num_rows($qry);
if($num_rows != 0){
echo "<p><img src='objetos/logotipo2.jpg' width='330' height='100' /><img src='objetos/titulo2.jpg' width='433' height='79' /></p>";
echo "El nombre de usuario ya existe.<br>";
echo "<a href=registro.html>Intente con otro nombre</a>";
exit;
}else{
// insertar en la tabla
$insert = mysql_query("insert into $table values ('NULL', '$nombreusuario', '$password', '$name', '$nombre', '$apellidos', '$email', '$edad', '$provincia', '$comentario','', '$website', '$ip', '$date', '$es', '$busca')")
or die("No se pudieron insertar los datos porque ".mysql_error());
}
}else{
echo "Ocurrieron Los Siguiente Errores:<br>".$error;
}
?>

Como bien dijiste las validaciones funcionan, ahora corregido deberia funcionar, prueba y veremos.
Ok.

Muchas Gracias.

Ya me funciona por fin, no he quitado los dos registros que creaste, el de con una letra y el de numeros, aunque el ultimo como te dije no tiene creados los archivos de usuario. Los elimino?

Una cosilla mas, me parece ue fuiste tu quien recpondio tambien a lo de los pps, sabes como puedo forzar la descarga, por que los subi en pps 97-2003, pero me sigue sucediendo lo mismo, al abrirlos los abre en modo de edición, como si fuesen ppt.

Perdon por las molestias y gracias de nuevo


Un saludo
Claro, puedes eliminarlos solo eran pruebas, que bueno que por fin ha funcionado.