Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com um problema que não sei como resolve. Tenho um sistema de login e registro e bem no formulário login coloquei o Action ="site.php" (Pelo o pouco que eu sei isso é para enviar os dados pro site que eu desejo por exemplo exibir o nome do usuário no site,se eu estiver errado me corrigem por favor),em fim quando vai fazer o login se deixar todos os campos do formulário vazio ele faz o login sem problemas '-' e o usuário é levado para a página principal que é o site.php,mas quando eu tiro o action não é possível fazer o login sem preencher o formulário corretamente, e é isso que eu quero.Porém quando eu tiro o action="site.php" o login fica como eu quero porém quando eu entro no site não mostra o nome do usuário.
Obrigado a quem se prontificar a ajudar o noob aqui :)
O problema é tipo quando eu coloco o Action no formulário da problema no login porém quando eu tiro fica tranquilo.
com o Action o login não verifica as condições e simplesmente abri o site.php,sem o Action o login faz a verificação e leva até o site.php porém o site.php parece que não recebe os dados.
Cara, não ficou claro o que você quer. Você quer que não seja efetuado o login caso o usuário não preencha as informações? É isso?
Qualquer coisa poem o seu código aí pra gente ver.
É assim eu tenho uma página para login e registro,o problema é o seguinte quando eu coloquei o action no formulário Login,na hora de preencher os dados (nome,e-mail,senha) eu consigo logar sem preencher o formulário quando eu clico em enviar me leva para outra página que é o site.php,no caso o sistema estava funcionando perfeitamente só depois do usuário preencher todos os campos ele realizava o login e era enviado para o site.php porém quando eu coloquei o action no formulário ele já leva diretamente pro site sem precisar realizar o login.O action redireciona pro site.php,mas o site.php não recebe o nome que é para ser impresso na tela do usuário,ex: Bem vindo Luck_. é meio difícil de explicar.
@Luck_., o action será a página para onde os dados do formulário serão levados.
Se tu estás na página index.php e coloca no action site.php, ao clicar no botão para enviar você será redirecionado para o site.php, seguido dos dados do formulário (se o método for via GET, a URL ficara nesse estilo):
site.php?user=Ambrosi&pass=12345
No entanto, como é um formulário de login, recomenda-se usar o método POST.
Aí sim, indo pra essa outra página, você faz a validação dos dados informados e, se estiverem corretos, você redireciona para a página principal.
Se possível, exemplifique com print's/código o que você está fazendo e os erros que estão aparecendo.
Sim mas no caso eu digito nada na tela de login e sou levado para o site.php eu queria que quando digitado fizesse a confirmação e me leva-se pro site.php,quando eu coloquei o action="site.php" que começou a dar problema.Ta tarde depois eu envio as prints.
@Luck_., pelo que tu está falando, tu não está fazendo a verificação, está apenas redirecionando puramente.
Sem o código fica difícil ajudar. Ficaremos no aguardo.
Tá..... vamos tentar entender....
Digamos que essa seja uma página que tenha isso.
<form method="POST" action="vai_receber.php">
<input name="texto_que_vai_enviar" type="text" />
<input type="submit" value="Enviar" />
</form>
Então como o formulário redireciona para vai_receber.php vamos ver esse arquivo
<?php
if (count($_POST)) {
echo ("Ops!!! Esse arquivo recebeu dados por POST <br/>Vamos depurar eles?!");
var_dump($_POST);
} else {
echo ("Epa!!! Você não enviou nada pelo formulário!");
}
>
6 horas atrás, Luck_. disse:
Sim mas no caso eu digito nada na tela de login e sou levado para o site.php eu queria que quando digitado fizesse a confirmação e me leva-se pro site.php,quando eu coloquei o action="site.php" que começou a dar problema.Ta tarde depois eu envio as prints.
Seria mais ou menos assim que está seu código?
No cado de direcionar com PHP pode usar isso.
header("Location: LOCAL");
no lugar de LOCAL você pode inserir um arquivo.php ou mesmo uma url
Aqui o código:
<?php
$connect = mysql_connect("127.0.0.1","root","") or die("Erro");
$db = mysql_select_db("loginregistro",$connect) or die ("Erro");
if (isset($_POST["login"])) {
$nome = $_POST["Nome"];
$email = md5($_POST["email"]);
$password = md5($_POST["password"]);
$verificar = mysql_query("SELECT * FROM users WHERE email = '$email' AND password = '$password'");
if (mysql_num_rows($verificar) <= 0) {
echo "<h3> Dados incorretos </h3>";
}
elseif($_POST["Nome"] == "") {
echo "<h3> Digite um nome</h3>";
}
else{
setcookie("login",$email);
//header("Location: site.php");
}
}
if (isset($_POST["registrar"])) {
$nome = $_POST["nome"];
$email = md5($_POST["email_registrar"]);
$password = md5($_POST["password_registrar"]);
$password_rep = md5($_POST["password_rep"]);
$verificar = mysql_query("SELECT * FROM users WHERE email = '$email'");
if (mysql_num_rows($verificar) > 0) {
echo "<h3> Está conta já está registrada </h3>";
}
elseif ($_POST["nome"]=="") {
echo "<h3> Digite um Nome </h3>";
}
elseif ($_POST["email_registrar"]=="") {
echo "<h3> Digite um email </h3>";
}
elseif ($_POST["password_registrar"]=="") {
echo "<h3> Digite uma senha </h3>";
}
elseif ($_POST["password_registrar"] != $_POST["password_rep"] ) {
echo "<h3> Senha incorreta </h3>";
}
elseif ($nome =="") {
echo "<h3> Digite um nome </h3>";
}
else {
$insert = mysql_query("INSERT INTO users (nome,email,password) VALUES ('$nome','$email','$password')");
echo "<h3> Conta registrada com sucesso </h3>";
}
}
?>
<body>
<form method="POST" action="site.php" >
<h2>Entrar na Conta</h2>
<input id="field" type="text" name="Nome" placeholder="Seu nome" />
<input id="field" type="email" name="email" placeholder="Endereço de E-mail" />
<input id="field" type="password" name="password" placeholder="Senha" />
<center><input type="submit" id ="but" name="login" value="Entrar" /></center>
</form>
<form method="POST" >
<h2>Criar sua conta</h2>
<input id="field" type="text" name="nome" placeholder="Nome Completo" />
<input id="field" type="email" name="email_registrar" placeholder="Endereço de E-mail" />
<input id="field" type="password" name="password_registrar" placeholder="Senha" />
<input id="field" type="password" name="password_rep" placeholder="Por favor repita sua Senha" />
<center><input type="submit" id ="but" name="registrar" value="Criar conta" /></center>
</form>
</body>
Antes meu código estava sem o Action="site.php" e estava funcionando perfeitamente tipo quando ia fazer o login verificava se o campo nome estava vazio e mandava o aviso de erro e redirecionava para o site.php quando as condições eram atendidas.Ai eu decidi que quando o usuário entra-se no site.php mostra-se o nome dele tipo Bem vindo Luck_. e para eu fazer isso deveria usar o Action="site.php" tipo tudo ocorre bem eu coloco meu nome no login e mostra no site,mas quando eu digito nada no formulário login e aperto no botão entrar ele me leva pro site.php, sem se quer faz a verificação se eu digitei alguma coisa. Tipo se eu digitar uma senha qualquer que nem foi criada ele me redireciona pro site.php.Isso ta acontecendo pq você não tem required no seu form, o required ele exige que as informações sejam preenchidas no seu formulário, as inputs ficariam dessa forma:
<form method="POST" action="site.php">
<h2>Entrar na Conta</h2>
<input id="field" type="text" name="Nome" placeholder="Seu nome" required/>
<input id="field" type="email" name="email" placeholder="Endereço de E-mail" required/>
<input id="field" type="password" name="password" placeholder="Senha" required/>
<center><input type="submit" id ="but" name="login" value="Entrar" /></center>
</form>
Ou seja, como estava sem required, se você apertasse em Entrar o formulário ia fazer a função que ele tava programado, que é te levar pra site.php com ou sem nenhuma informação inserida.
Outro erro que você cometeu é enviar os dados de login do formulário pra site.php, mas usar o código que faz a verificação do login no mesmo local do formulário, dessa forma nunca vai ser possível validar o login, pq ou você faz a validação na mesma página e depois redireciona usando header() igual o Omar falou, ou faz a validação do login em site.php.
Dei uma consertada, vê se vai aí agora:
<?php
$connect = mysqli_connect("127.0.0.1","root","" , "loginregistro") or die("Erro");
if (isset($_POST["login"])) {
$nome = $_POST["Nome"];
$email = md5($_POST["email"]);
$password = md5($_POST["password"]);
$verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
if (mysqli_num_rows($verificar) <= 0) {
echo "<h3> Dados incorretos </h3>";
}
elseif($_POST["Nome"] == "") {
echo "<h3> Digite um nome</h3>";
}
else{
setcookie("login",$email);
header("Location: site.php");
}
}
if (isset($_POST["registrar"])) {
$nome = $_POST["nome"];
$email = md5($_POST["email_registrar"]);
$password = md5($_POST["password_registrar"]);
$password_rep = md5($_POST["password_rep"]);
$verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email'");
if (mysqli_num_rows($verificar) > 0) {
echo "<h3> Está conta já está registrada </h3>";
}
elseif ($_POST["nome"]=="") {
echo "<h3> Digite um Nome </h3>";
}
elseif ($_POST["email_registrar"]=="") {
echo "<h3> Digite um email </h3>";
}
elseif ($_POST["password_registrar"]=="") {
echo "<h3> Digite uma senha </h3>";
}
elseif ($_POST["password_registrar"] != $_POST["password_rep"] ) {
echo "<h3> Senha incorreta </h3>";
}
elseif ($nome =="") {
echo "<h3> Digite um nome </h3>";
}
else {
$insert = mysqli_query($connect , "INSERT INTO users (nome,email,password) VALUES ('$nome','$email','$password')");
echo "<h3> Conta registrada com sucesso </h3>";
}
}
?>
<body>
<form method="POST">
<h2>Entrar na Conta</h2>
<input id="field" type="text" name="Nome" placeholder="Seu nome" />
<input id="field" type="email" name="email" placeholder="Endereço de E-mail" />
<input id="field" type="password" name="password" placeholder="Senha" />
<center><input type="submit" id ="but" name="login" value="Entrar" /></center>
</form>
<form method="POST" >
<h2>Criar sua conta</h2>
<input id="field" type="text" name="nome" placeholder="Nome Completo" />
<input id="field" type="email" name="email_registrar" placeholder="Endereço de E-mail" />
<input id="field" type="password" name="password_registrar" placeholder="Senha" />
<input id="field" type="password" name="password_rep" placeholder="Por favor repita sua Senha" />
<center><input type="submit" id ="but" name="registrar" value="Criar conta" /></center>
</form>
</body>
Tirei o action="site.php" pq você está fazendo a validação na mesma página do login e já tinha um header() pra fazer o redirecionamento pra site.php. Se você quiser usar o action="site.php", você vai ter que colocar o código de validação do login lá no arquivo site.php, pq do contrário não vai funcionar mesmo, o usuário vai preencher as informações e o formulário vai fazer o papel dele, pegar as informações e levar pra site.php. Troquei os mysql que você tava usando e passei pra mysqli, pq o mysql já não é mais recomendável usar.
Testa aí pra ver.Tipo mano deu mais ou menos certo, por que eu queria que mostra-se o nome do usuário no site,agora não da mais '-' esse é o código do site.php
<?php
$name = isset($_POST["Nome"])?$_POST["Nome"]:"Amigo";
echo "<header class='masthead' id='bg'>
<div class='intro-text'>
<div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
<h1> Bem vindo $name </h1>
<div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
<center> <form class='navbar-form navbar-left' >
<a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger' href='#services' id='in' >Tell Me More</a>
</div>"
?>Nesse script do site.php você só consegue capturar o nome do usuário via $_POST , que no caso você pegava pelo formulário. Você pode pegar o nome do usuário que logou via cookie, ficaria dessa forma:
No login onde ta o formulário troca esse trecho:
if (isset($_POST["login"])) {
$nome = $_POST["Nome"];
$email = md5($_POST["email"]);
$password = md5($_POST["password"]);
$verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
if (mysqli_num_rows($verificar) <= 0) {
echo "<h3> Dados incorretos </h3>";
}
elseif($_POST["Nome"] == "") {
echo "<h3> Digite um nome</h3>";
}
else{
setcookie("login",$email);
header("Location: site.php");
}
}
por isso:
if (isset($_POST["login"])) {
$nome = $_POST["Nome"];
$email = md5($_POST["email"]);
$password = md5($_POST["password"]);
$verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
if (mysqli_num_rows($verificar) <= 0) {
echo "<h3> Dados incorretos </h3>";
}
elseif($_POST["Nome"] == "") {
echo "<h3> Digite um nome</h3>";
}
else{
setcookie("login",$email);
setcookie("nameUser" , $nome , strtotime("+1 days"));
header("Location: site.php");
}
}
No site.php troca isso:
<?php
$name = isset($_POST["Nome"])?$_POST["Nome"]:"Amigo";
echo "<header class='masthead' id='bg'>
<div class='intro-text'>
<div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
<h1> Bem vindo $name </h1>
<div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
<center> <form class='navbar-form navbar-left' >
<a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger' href='#services' id='in' >Tell Me More</a>
</div>"
?>
Por isso:
<?php
if(isset($_COOKIE["nameUser"])){
$name = $_COOKIE["nameUser"];
} else {
$name = "desconhecido";
}
echo "<header class='masthead' id='bg'>
<div class='intro-text'>
<div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
<h1> Bem vindo $name </h1>
<div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
<center> <form class='navbar-form navbar-left' >
<a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger' href='#services' id='in' >Tell Me More</a>
</div>";
?>
Testa aí pra ver se vai agora.Funcionou Obrigado mano,obrigado a todos que tentou ajudar o noob aqui kk.
@Luck_. que isso cara, a rapaziada ta sempre por aqui pra ajudar e aprender, sempre que tiver duvida pode contar com a galera aqui.