estimado Posted June 20, 2012 Report Share Posted June 20, 2012 (edited) boas Bem, como alguns sabem eu estou a fazer um sistema de registo para um site, só que eu hoje deparei-me com um problema e gostaria se me podessem ajudar! Bem é o seguinte: -> Eu se não escrever nada nos campos de registo, eu consigo registar-me!?? Depois se eu for ao Lofin e digitar os campos em branco e fazer"Login" ele entra sem escrever nada! Podem-me ajudar a resolver este problema, sendo que só se regista quando os campos estiverem preenchidos e o email correctamente! -> E depois queria que pedi-se para digitar a senha 2 vezes! Tipo: Password: Digite novamente a Password: O meu codigo do ficheiro "Registar"! <?php require_once "config.php"; // inclui a conexão a database if(!isset($_POST['join'])){ echo " <form method=\"post\" action=\"registar.php\"> <label>Nome de Utilizador</label><br/><input name=\"username\"/><br/> <label>Email</label><br/><input name=\"email\"/><br/> <label>Password</label><br/><input name=\"password\" type=\"password\"/><br/> <input type=\"submit\" name=\"join\" value=\"register\"/> </form> "; }else{ $pass = sha1($_POST['password']); $user = mysql_real_escape_string($_POST['username']); $email = $_POST['email']; mysql_query("INSERT INTO users (id, username, email, password) VALUES (NULL, '$user', '$email', '$pass')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error()); echo "Registo Completo - <a href=\"login.html\">Entrar na Conta</a>."; } ?> Obrigado Edited June 20, 2012 by softklin Visual Studio 2010 C# Link to comment Share on other sites More sharing options...
softklin Posted June 20, 2012 Report Share Posted June 20, 2012 (edited) Não consegues fazer essa alteração? Não tem nada de complicado, basta verificares se os campos do formulário são diferentes de "" (ou se quiseres, usar o empty(), mas tem em atenção que valores como 0 são considerados vazios). Para o caso da password, basta criares um novo campo de formulário HTML por baixo de password (copy/paste do campo password) e ter o cuidado de mudar o nome, por exemplo, para password2. Na altura de confirmar, basta fazer algo como: if( $_POST['password'] !== $_POST['password2'] ) { die('Ocorreu um erro ao registar: a password e a sua confirmação devem ser iguais'); } Isto tem de estar depois da validação dos campos em branco, senão é criado um registo com password em branco. Um conselho adicional: se ainda não tiveste esse cuidado, coloca o campo do username na tua base de dados como UNIQUE. Dessa forma, não inseres vários utilizadores com o mesmo username involuntariamente. Edited June 20, 2012 by softklin Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
estimado Posted June 20, 2012 Author Report Share Posted June 20, 2012 obrigado, o código funcionou perfeitamente:D Consegui! Obrigado pela sua sugestão, por acaso não sabia disso:D Só uma pequena pergunta! Não dá para mudar isto? Duplicate entry 'estimado' for key 'username' Para: O Username digitado já se encontra registado na Base Dados! Dá para mudar? Obrigado:D Visual Studio 2010 C# Link to comment Share on other sites More sharing options...
softklin Posted June 20, 2012 Report Share Posted June 20, 2012 É possível colocar uma mensagem personalizada, mas é preferível fazeres uma verificação manual se o username já existe. Essa restrição serve, sobretudo, para não permitir inserir usernames duplicados na tabela. Vamos supor que tens um backup e que, por erro, fazes insert em vez de update: irias ficar com usernames duplicados. Do lado do PHP, basta um select: $res = mysql_query("SELECT COUNT(*) FROM users WHERE username = '$username'"); if( mysql_result($res, 0) > 0 ) { die('O Username digitado já se encontra registado na Base Dados!'); } Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
estimado Posted June 20, 2012 Author Report Share Posted June 20, 2012 boas obrigado pela ajuda! E então e sobre o registo com os campos em branco? Podes-me ajudar a resolver isso também? Obrigado Visual Studio 2010 C# Link to comment Share on other sites More sharing options...
softklin Posted June 20, 2012 Report Share Posted June 20, 2012 Os registos em branco não tem segredo nenhum. Tal como disse anteriormente, basta verificares com um if, se os campos estão vazios: isto é, se os campos são iguais a "". if( $_POST['username'] == "" ) { die('Deve indicar um username'); } e assim por diante para os outros campos. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
estimado Posted June 21, 2012 Author Report Share Posted June 21, 2012 Obrigado... Percebi como fazer isso, dos campos vazios:D Muito obrigado Visual Studio 2010 C# Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now