joaocasta Posted August 14, 2012 at 10:10 PM Report Share #472309 Posted August 14, 2012 at 10:10 PM Boas noites tenho uma pagina de registo em PHP, mas nao sei o que se passa, pois sempre que preencho os dados todos diz-me "Tem de preencher todos os campos." Fica aqui o código: registar.php <?php include "config.php"; include "template.php"; $error = ""; $success = ""; if (!empty($_POST['register'])) { if (($_POST['username']) && ($_POST['password']) && ($_POST['repassword']) && ($_POST['email']) && ($_POST['nomecompleto']) && ($_POST['apelido']) && ($_POST['numbi']) && ($_POST['morada']) && ($_POST['codpostal']) && ($_POST['apelido']) && ($_POST['localidade']) && ($_POST['distrito']) && ($_POST['idade']) && ($_POST['telefone']) && (int)($_POST['estadocivil']) > 0 && (int)($_POST['tipohabitacao']) > 0 && ($_POST['carro']) && ($_POST['marca']) && ($_POST['profissao']) && ($_POST['profissaogostava']) && ($_POST['profissoesqsei']) && ($_POST['empregador']) && ($_POST['actividadextra']) && ($_POST['localondepratica']) && ($_POST['agregadofamiliar'])) { print "<div align='center'><h4>Tem de preencher todos os campos.</h4></div>"; exit; } $username = $_POST['username']; $dupe1 = mysql_num_rows(mysql_query("select * from users where username='$username'")); if ($dupe1 > 0) { print "<div align='center'><h4>Esse username ja esta em uso.</h4></div>"; exit; } $email = $_POST['email']; $dupe2 = mysql_num_rows(mysql_query("select * from users where email='$email'")); if ($dupe2 > 0) { print "<div align='center'><h4>Esse email ja esta a ser usado.</h4></div>"; exit; } elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ print "<div align='center'><h4>Email nao é valido.</h4></div>"; } //check if passwords are the same if ($_POST['password'] != $_POST['repassword']) { print "<div align='center'><h4>Passwords nao coincidem.</h4></div>"; exit; } if (empty($error )) { $username = mysql_real_escape_string($_POST['username']); $password = md5($_POST['password']); $email = mysql_real_escape_string($_POST['email']); $nomecompleto = mysql_real_escape_string($_POST['nomecompleto']); $apelido = mysql_real_escape_string($_POST['apelido']); $numbi = mysql_real_escape_string($_POST['numbi']); $morada = mysql_real_escape_string($_POST['morada']); $codpostal = mysql_real_escape_string($_POST['codpostal']); $localidade = mysql_real_escape_string($_POST['localidade']); $distrito = mysql_real_escape_string($_POST['distrito']); $idade = mysql_real_escape_string($_POST['idade']); $telefone = mysql_real_escape_string($_POST['telefone']); $estadocivil = (int)($_POST['estadocivil']); $tipohabitacao = (int)($_POST['tipohabitacao']); $carro = mysql_real_escape_string($_POST['carro']); $marca = mysql_real_escape_string($_POST['marca']); $profissao = mysql_real_escape_string($_POST['profissao']); $profissaogostava = mysql_real_escape_string($_POST['profissaogostava']); $profissoesqsei = mysql_real_escape_string($_POST['profissoesqsei']); $empregador = mysql_real_escape_string($_POST['empregador']); $actividadextra = mysql_real_escape_string($_POST['actividadextra']); $localondepratica = mysql_real_escape_string($_POST['localondepratica']); $agregadofamiliar = mysql_real_escape_string($_POST['agregadofamiliar']); if (empty($error)) { $registerquery = mysql_query("INSERT INTO users (username, password, email, nome_completo, apelido, numbi, codigo_postal, localidade, distrito, idade, telefone, estado_civil, tipo_habitacao, carro, marca, profissao, profissao_gostava, profissao_sei, empregador, actividades_extra, local_onde_pratica, numagregadofamiliar) VALUES('".$username."', '".$password."', '".$email."', '".$nomecompleto."', '".$apelido."', '".$numbi."', '".$morada."', '".$codpostal."', '".$localidade."', '".$distrito."', '".$idade."', '".$telefone."', '".$estadocivil."', '".$tipohabitacao."', '".$carro."', '".$marca."', '".$profissao."', '".$profissaogostava."', '".$profissoesqsei."', '".$empregador."', '".$actividadextra."', '".$localondepratica."', '".$agregadofamiliar."',)"); if($registerquery) { $success .= "<div align='center'>A sua conta foi criada. Por favor <a href=\"login.php\">clique aqui para login</a>.</div>"; } else { $error .= "<div align='center'>Desculpe, o registo falhou. Por favor tente de novo.</div>"; } } } } ?> <?php if (!empty($error)) { ?> <h1 align='center'>Erro</h1> <?php echo $error; ?> <?php }elseif (!empty($success)) { echo $success; }else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Registo</title> <link rel="stylesheet" href="style.css" type="text/css" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script language="javascript" src="funcoes.js"></script> <style type="text/css"> div.dadospessoais { float:left; } div.dadospessoais2 { margin: -248px; padding-right: 10px; } </style> </head> <body> <div id="main"> <div id="login_wrapper"> <div id="login_box"> <form method="post" action="registar.php" name="registerform" id="registerform"> <div class="dadospessoais"> <table> <tr> <td> Username: </td> <td> <input id="username" name="username" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Password: </td> <td> <input id="password" name="password" type="password" class="input" size="25"/> </td> </tr> <tr> <td> Confirme a Password: </td> <td> <input id="repassword" name="repassword" type="password" class="input" size="25"/> </td> </tr> <tr> <td> Email: </td> <td> <input id="email" name="email" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Nome Completo: </td> <td> <input name="nomecompleto" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Apelido: </td> <td> <input name="apelido" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Nº BI: </td> <td> <input name="numbi" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Morada: </td> <td> <input name="morada" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Código Postal: </td> <td> <input name="codpostal" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Localidade: </td> <td> <input name="localidade" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Distrito: </td> <td> <input name="distrito" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Idade: </td> <td> <input name="idade" type="text" class="input" size="25"/> </td> </tr></table></div> <div style="height: 250px; margin-left: 20px; margin-right: 10px;"></div> <div class="dadospessoais2"><table><tr> <td> Telefone: </td> <td> <input name="telefone" type="text" class="input" size="25"/> </td> </tr> <tr><td>Estado Civil:</td><?php $q = 'SELECT id, estadocivil_categoria FROM estadocivilselect'; $result = mysql_query($q); echo '<td><select name="estadocivil">'; $c=''; while ($row = mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row['estadocivil_categoria'].'</option>'; } echo '</select></td><tr>'; ?> <tr><td>Tipo de Habitação</td><?php $q = 'SELECT id, tipohabitacao_categoria FROM tipohabitacaoselect'; $result = mysql_query($q); echo '<td><select name="tipohabitacao">'; $c=''; while ($row = mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row['tipohabitacao_categoria'].'</option>'; } echo '</select></td></tr>'; ?> <tr> <td> Carro: </td> <td> <input name="carro" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Marca: </td> <td> <input name="marca" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Profissão: </td> <td> <input name="profissao" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Profissão que gostava de ter: </td> <td> <input name="profissaogostava" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Profissões que sei e posso desempenhar: </td> <td> <input name="profissoesqsei" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Empregador: </td> <td> <input name="empregador" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Actividades Extra: </td> <td> <input name="actividadextra" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Local Onde Pratica: </td> <td> <input name="localondepratica" type="text" class="input" size="25"/> </td> </tr> <tr> <td> Nº Agregado Familiar: </td> <td> <input name="agregadofamiliar" type="text" class="input" size="25"/> </td> </tr> </table></div> <div style="margin-top: 250px; margin-left: 350px;"><input type="submit" name="register" id="register" value="Register" /></div> </form></div></div> <?php } ?> </div> </body> </html> E queria que sempre que se o email nao for valido que aparecesse a mensagem, por baixo do campo de email... E se as passwords nao coincidirem, aparecia a mensagem a dizer que as passwords nao coincidem por baixo do campo da password. E como tenho uma função para colocar os campos vermelhos quando estao vazios nao é precisa aquela mensagem a dizer "Tem de preencher todos os campos.", pois nao? Espero por ajuda obrigado. Link to comment Share on other sites More sharing options...
pikax Posted August 16, 2012 at 03:16 PM Report Share #472462 Posted August 16, 2012 at 03:16 PM para veres se a variavel existe usa a funcao isset: if(isset($_POST["username"])...) Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
joaocasta Posted August 16, 2012 at 03:17 PM Author Report Share #472463 Posted August 16, 2012 at 03:17 PM e isto: E queria que sempre que se o email nao for valido que aparecesse a mensagem, por baixo do campo de email...E se as passwords nao coincidirem, aparecia a mensagem a dizer que as passwords nao coincidem por baixo do campo da password. E como tenho uma função para colocar os campos vermelhos quando estao vazios nao é precisa aquela mensagem a dizer "Tem de preencher todos os campos.", pois nao? Link to comment Share on other sites More sharing options...
pikax Posted August 16, 2012 at 03:26 PM Report Share #472465 Posted August 16, 2012 at 03:26 PM um emal valido tem que ter um @, 1 letra antes do @, outra letra depois do @ e um . basicamente tens que criar uma funcao que faca algo do genero(tens que ver que e' uma forma muito simples de ver se o email e' valido!) podes manter ou nao isso e' deixado ao teu criterio Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
yoda Posted August 17, 2012 at 04:27 AM Report Share #472537 Posted August 17, 2012 at 04:27 AM (edited) // em cima, onde tens a variavel $error, substitui por um array $errors = array(); // para adicionares erros ao array, substituis os prints dos mesmos por isto $errors['email_invalido'] = "<div align='center'><h4>Email nao é valido.</h4></div>"; // mais em baixo, na parte dos erros, substituis por isto if (!empty($error)) { foreach($errors as $error) { echo $error; } } // se quiseres mostrar um erro específico num local diferente if (isset($errors['email_invalido'])) { echo $errors['email_invalido']; } Edited August 17, 2012 at 04:27 AM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
joaocasta Posted August 17, 2012 at 07:37 AM Author Report Share #472541 Posted August 17, 2012 at 07:37 AM // se quiseres mostrar um erro específico num local diferente if (isset($errors['email_invalido'])) { echo $errors['email_invalido']; } esta parte de colocar num local diferente, como sei que por exemplo ela fica por baixo do input? tenho de fazer lá o echo, não é? Só estou a perguntar para depois de fazer tantos topicos e tantas mensagen sobre a mesma coisa. Link to comment Share on other sites More sharing options...
security Posted August 17, 2012 at 11:19 AM Report Share #472562 Posted August 17, 2012 at 11:19 AM ou entao podes utilizar javascript para verificar se todos os campos estão preenchidos e de forma correcta. Podes fazer isso quando retiras o cursor do caixa de texto (evento onblur, se nao estou em erro), ou entao quando clicas no botao submit. podes fazer uma função veirificando tudo de uma vez, quando submetes ou entao ir verificando por onde passa o cursor... "Innovation distinguishes between a leader and a follower." Steve jobs. Link to comment Share on other sites More sharing options...
yoda Posted August 17, 2012 at 02:09 PM Report Share #472597 Posted August 17, 2012 at 02:09 PM esta parte de colocar num local diferente, como sei que por exemplo ela fica por baixo do input? tenho de fazer lá o echo, não é? Só estou a perguntar para depois de fazer tantos topicos e tantas mensagen sobre a mesma coisa. Sim, metes onde queres que apareça. before you post, what have you tried? - http://filipematias.info sense, purpose, direction 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