Zifman 0 Denunciar post Postado Janeiro 16, 2007 Olá pessoal, bom primeiro gostaria de dizer que o curso de php esta muito bom, muito bom mesmo, comecei a estudar faz 2 dias e seguindo as aulas do curso feitas aqui no forum, bom pessoal tentei fazer um pequeno sistema pro um forum que tenho, que seria apenas o seguinte funcionamento: Teria um formulario simples apenas com o nome email assunto e o email a ser enviado, o mesmo seria gravado no mysql no qual teria um pag de admin na qual os mesmo poderiam ver as mensagens e por ela mesmo responder enviando um email a seu destinatario e excluir tb após sua resposta. ( penso tb eu colocar um login pra acessar essa pag -- admin-- + ainda não sei fazer isso rsrsrsrrss ) bom até aqui maneiro, se não fosse os pequeno detalhes, tipo no formulario queria colocar pra ele verificar se o user digitou um nome mesmo e sé ele escreveu o @ do email e tb se o email ( texto ) a ser enviado foi escrito mesmo ou não. tenho as seguintes dúvidas: o codigo abaixo eu devo colocar após o formulario ou na pag salvar.php ( a qual faz o processo de gravar no banco de dados ) [b]// Aqui foi pra ver o nome se tiver sem nada escript ele avisa[/b]if ($nick == "") { echo "Digite seu Nome\n";} [b]/* Aqui pra ver o campo email do usuario estar com o @, na minha pesquisa encontrei esse função na qual não deu certo, tentei tb utilizar o strrpos mas não tive sucesso com o mesmo*/[/b]if strpos ($email_user, "@") = 0 { echo "O e-mail digitado não é válido\n";}[b]// aqui é apenas pra ver se ele digito no campo no qual o texto seria a dúvida dele[/b]if ($email == "") { echo "ERRO - Digite a sua mensagem\n";} bom só é pra ver ver isso mesmo dos campos, mas tipo aquela parte do email está certa ? é esssa função que utiliza pra compar se contem um CHAR X em um STRING Y ? esse codigo ele tem qque ficar na mesma pag do formulario néh ? eu coloquei ele nessa mesma pag + da erro e qd eu coloco na pag salvar.php tirando a parte de verificar o email os outros 2 campos ele ver certinho + não barra, ou seja mostra o aviso mas grava no banco de dados. tb não sei se nos if eu uso ELSEIF ou só ELSE e tb na parte admin onde tem as mensagen pra deletar o header pega, ( se não me engano seria pra pega a info da url no caso a id do email enviado ) -- peguei como base o exercicio do modulo 7 do curso online aqui do fórum, o mesmo não funciona da erro nessa linha Sei que são perguntas bestas pra algumas pessoas mas é como eu disse hj é o segundo dia que estudo php e por isso to me batendo nele tomei como base tb o exercico do mudulo 7 tb não sei se esse meu metodo de ficar tentando criar sistemas simples é claro e uma forma boa de estudo, bom fico no agurado de que vcs possam me ensinar ou mesmo me dar alguma dicas --- desculpe tb por alguns erros ortografico Compartilhar este post Link para o post Compartilhar em outros sites
Megadeth 2 Denunciar post Postado Janeiro 16, 2007 Vai com calma explica o que você quer uma coisa por vez. Compartilhar este post Link para o post Compartilhar em outros sites
Zifman 0 Denunciar post Postado Janeiro 16, 2007 Vai com calma explica o que você quer uma coisa por vez.rsrrs ok Megadeth, bom então vamos lágostaria primeiro de tirar esse minha dúvida em relação ao email, já tentei de tudo + não sei como fazer pra verificar se um CHAR X existe em uma STRING Y, sendo caso negativo ele mostra um erro na tela, é se o codigo postado acima ele deve ficar na pag salvar.php ou na pag do formulario, pois no do formulario da erro.ultima rsrsrrs ---> tb não sei se é pra usar elseif ou varios if's e como barra o andamento do script se um desses if's entrar, pois o mesmo mostra o aviso mas grava no banco de dados.Muito obrigado Megadeth pela atenção Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Janeiro 16, 2007 Eu tenho um javascript que verifica se tem @ no mail, achei aqui no fórum mesmo, veio de brinde com um verificador de CPF/CNPJ. Dá uma procurada. No teu script o erro é na utiliziação da função strpos(), removi este if e os demais funcionaram. Como eu nunca utilizei-a, fiz um scriptzinho pra ti, bem simples, espero que seja útil. Altera a variável $email para testar, pq assim como está roda direto, sem verificar nada. <?php//O de baixo é melhor?> Vou pôr aqui a versão 2.0 pois encontrei uma falha. Imagine que o usuário use o e-mail da seguinte forma: meu.nome@mail.com, então se ele digitar meu.nome@sempontonofinal, iria dizer que está correto, mas não é isso que queremos, por isso esta correção acaba com este problema: <?php$email = "eu.eu@eu.com";//Verifica se tem @$a = explode("@", $email);$b = $a[1];if($b == "") { echo "Digite o seu e-mail corretamente. (Falta @)"; }//Verifica se tem ponto$c = explode(".", $b);$d = $c[1];if($d == "") { echo "Digite o seu e-mail corretamente. (Falta ponto)"; }?> Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Janeiro 16, 2007 Dei uma olhada na função strpos() e achei o a forma correta de utilizá-la. <?php$mail = "eu@eu";$arroba = "@";$posicao = strpos($mail, $arroba);if($posicao === false){ echo "O e-mail digitado não é válido\n";}?>Observação do manual: Note o uso de ===. Simples == não funcionaria como esperado por causa da posição de 'a' é 0 (primeiro) caractere. Compartilhar este post Link para o post Compartilhar em outros sites
Zifman 0 Denunciar post Postado Janeiro 16, 2007 Olá Vebersol, muito obrigado ajudo muito, vlw mesmo.eu não sei usar ainda essas estruturas do php por isso o codigo ta cheio de if's rsrsrrs ( to aprendendo aos poucos ficarei como vcs )bom o meu codigo do salvar fico assim: <?php if ($nick == "") { echo "O nome digitado não é válido<br>"; }//Verifica se tem @$a = explode("@", $mail_user);$b = $a[1]; if($b == "") { echo "Digite o seu e-mail corretamente. (Falta @)<br>"; }//Verifica se tem ponto$c = explode(".", $B);$d = $c[1]; if($d == "") { echo "Digite o seu e-mail corretamente. (Falta ponto)<br>"; } if ($nick <> "") { if ($b <> "") { If ($d <> "") { echo "<center>Nenhum erro foi encontrado</center><br>"; } } }//---------------------------------------------------------------------------- mysql_connect("localhost", "*****","*****");mysql_select_db("teste");mysql_query("INSERT INTO email VALUES ('', '$nick', '$mail_user', '$assunto', '$email')");mysql_close();echo "<center>E-mail enviado com sucesso - Aguarde que em breve retornaremos</center><br><br>";?>só que resto uma dúvida em relação a isso, tipo ele verifica os dados certinho está 100%, só que passa é grava no banco de dados tendo ou não erros encontrados, bom seria recomenda eu separar isso por pag tipo, vem do formu. vai pro pag verificar.php depois passa pra pag salvar.php ou é melhor deixar o verificar e o salvar em uma pag só como está logo acima ? (( se for melhor ficar em uma pag só mesmo como o que eu posso fazer pra barra caso ele ache um erro ?)OBS - vebersol vlw pelo script, vlw mesmo brother, + tipo assim man tenta me dizer como tu fez ( dicas ) até pra eu me virar aqui só sem me passar o código pronto, pq acho que assim eu vou aprender + ( gravar na mente ), pow man não fique chateado comigo por isso, + por qualquer coisa desde já eu te pesso desculpas. Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Janeiro 16, 2007 Aí está a correção, quando tu faz if's e quer impedir que alguma coisa, tu faz else depois, isto indica se o if for falso, ele roda o que tá no else, e se for verdadeiro, não roda o que tá no else. Na prática: if($a == 0) { echo "$a é igual a zero"; } else { echo "$a é diferente de zero"; }Então teu script precisa desses else para não rodar quando uma verificação for verdadeira. Outra coisa, deixei como comentário umas verificações que puseste, pois estava fazendo o script ser redundante, o que o deixaria mais lento. <?phpif ($nick == ""){echo "O nome digitado não é válido<br>";} //Se nick está corretoelse {//Verifica se tem @$a = explode("@", $mail_user);$b = $a[1];if($b == "") { echo "Digite o seu e-mail corretamente. (Falta @)<br>"; }//Se e-mail está correto arrobaelse {//Verifica se tem ponto$c = explode(".", $b);$d = $c[1];if($d == "") { echo "Digite o seu e-mail corretamente. (Falta ponto)<br>"; }//Se e-mail está correto pontoelse {//Estas verificações estão apenas repetindo as anteriores. Pois se os if's verificam se é igual a vazio, quando retorna false, é porque é diferente de vazio.//if ($nick <> "")//{//if ($b <> "")//{//if ($d <> "")//{//echo "<center>Nenhum erro foi encontrado</center><br>";//}//}//}//----------------------------------------------------------------------------mysql_connect("localhost", "*****","*****");mysql_select_db("teste");mysql_query("INSERT INTO email VALUES ('', '$nick', '$mail_user', '$assunto', '$email')");mysql_close();echo "<center>E-mail enviado com sucesso - Aguarde que em breve retornaremos</center><br><br>";//Fecha else do nick correto}//Fecha else do email correto arroba}//Fecha else do email correto ponto}?>Fico feliz que queiras entender como as coisas funcionam, também sou assim! É que quando tenho dúvidas tento entender como as coisas funcionam no manual do PHP, vendo as funções que têm no script e pesquisando como elas funcionam. No caso, eu usei a função explode(). Mas o que ela faz? Como diz no manual, ela divide um string em n strings, de acordo com o separador que tu denominas. Vou mostrar com as verificações que fiz: $a = explode("@", $email); Onde: "@" -> é o separador, então toda vez que tiver @ na variavel $email, ele dividirá. digamos que $email = "a@b@c@d@e"; Para exibir todas as letras sem @, podemos fazer o seguinte: $texto = $a[0]."-".$a[1]."-".$a[2]."-".$a[3]."-".$a[4]; No entanto, se quer exibir somente a letra c, podemos fazer assim: $texto = $a[2]; Espero que tenha entendido. Mais sobre a função explode(): http://www.php.net/manual/pt_BR/function.explode.php Valeu! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Zifman 0 Denunciar post Postado Janeiro 17, 2007 Olá Verbesol, muito obrigado, realmente você me ajudo muito. Não + um dúvida é apenas um comentario a saber se meu pensamento estaria certo. Tipo nesse código ele primeiro executa os if's, sendo que se um if é verdadeiro ele executa o que tem dentro do if e pula o else executando o restante do código da pag. (( PRONTO AQUI VEM O QUERO DIZER )) se ele qd termina de executar essa estrutura do if e executa o restante do codigo dessa pagina, só que gostaria que barrase a executão ou seja não executar a parte do código na qual grva os dados no bancvo de dados se um dos if's retornar false. bom então na me deu a seguinte ideia: mysql_connect("localhost", "*****","*****");mysql_select_db("teste");if ( $erro == "0") { mysql_query("INSERT INTO email VALUES ('', '$nick', '$mail_user', '$assunto', '$email')"); mysql_close(); echo "<center><br><b>E-mail enviado com sucesso - Aguarde que em breve retornaremos<b></center><br><br>";}else{echo "<br><br><b>O email não foi enviado, tente novamente<b><br>";} sendo que na variavel ERRO ele inicia com valor 0, a na estrura do if se caso retornar false ela recebe o valor 1, bom isso funciona mas o meu medo é: é correto fazer isso? fazendo isso o codigo não ficaria mas lento, ou eu estou perdido dando voltas em um processo que poderia ser + curto. OBS - Sobre o ( explode ) eu entendi, obrigado pela explicação, deu pra tirar dúvidas relacionada a mesma. Aqui segue a pag toda: <?php$erro = "0";if ($nick == ""){echo "O nome digitado não é válido<br>";$erro = "1";} //Se nick está corretoelse { echo "O nome digitado está correto<br>"; }//Verifica se tem @$a = explode("@", $mail_user);$b = $a[1];if($b == "") { echo "Digite o seu e-mail corretamente. (Falta @)<br>"; $erro = "1";}//Se e-mail está correto arrobaelse { echo " O email foi digitado corretamente com o arrroba (@) <br>"; }//Verifica se tem ponto$c = explode(".", $b);$d = $c[1];if($d == "") { echo "Digite o seu e-mail corretamente. (Falta ponto)<br>"; $erro = "1";}//Se e-mail está correto pontoelse { echo " O email foi digitado corretamente com o ponto (.)<br>"; }//----------------------------------------------------------------------------mysql_connect("localhost", "****","****");mysql_select_db("teste");if ( $erro == "0") { mysql_query("INSERT INTO email VALUES ('', '$nick', '$mail_user', '$assunto', '$email')"); mysql_close(); echo "<center><br><b>E-mail enviado com sucesso - Aguarde que em breve retornaremos<b></center><br><br>";}else{echo "<br><br><b>O email não foi enviado, tente novamente<b><br>";}?> Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Janeiro 17, 2007 Ótima idéia! O PHP é bom que dá diversas saídas para um mesmo problema! Gostei dessa lógica, parabéns! :D Compartilhar este post Link para o post Compartilhar em outros sites