Jump to content

Recommended Posts

Posted

Boas... tenho o seguinte problema.

Na base de dados, na tabela "members", são registados os novos utilizadores. A tabela contém o username,password,email,nome,morada e telefone. Ao registar, eles apenas preenchem o username, password e email.

Depois do utilizador ter feito o login, ele terá a opção de editar as campos que estão em branco (ele só pode editar o nome morada e telefona).

Eu estava a tentar fazer assim, mas não estou a conseguir 😞

Quando carrego alterar, ele vai ao index.php, mas não grava no mysql 😞(



<?php session_start()
?>

<div id="my_popup"  style="display:none;border:0px dotted gray;padding:.3em;background: rgba(255, 255, 255, 0.8);;position:absolute;width:600px;height:600x\px;left:380px;top:100px;z-index:+1;">
   <div align="right">
       <a href="javascript:hide_popup('my_popup')">close</a>
   </div>
<h1>LOGIN</h1>
<p>
<form name="form1" method="post" action="index.php">


<table border="0"  cellpadding="0" cellspacing="0" align="center">


<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>

<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>

<tr>
<td style="font-family:Verdana, Geneva, sans-serif; font-size:; color:#006" width="100" align="center">Username</td>                   
<td> </td>
<td style="font-family:Verdana, Geneva, sans-serif; font-size:12; color:#fffff;background-color:white  " width="220"; ><input name="username" type="text" id="username" size="30" color="white"></td>
</tr>

<td> </td>
<tr>
<td style="font-family:Verdana, Geneva, sans-serif; font-size:14; color:#006" width="100" align="center">Password</td> 
<td> </td> 
<td style="font-family:Verdana, Geneva, sans-serif; font-size:12; color:#fffff; background-color:white; " width="220"><input name="password" type="password" id="Password" size="30" maxlength="30" ></td>
</tr>



<tr>

<td align="center" ><input type="submit" class="pequeno" name="login" value="      LOGIN      "  /> </td>
<td align="center" > <a href ="registar_utilizador.php"><input type="button" name="registar" id="registar" value="Registar"></a> </td>

</tr>

</table>

</form> 
<?php
error_reporting(0);   // não deixa aparecer erros de php
session_start(); // inicia a sessão depois de ter feito o login


if (isset($_POST['login'])){

if (!EMPTY($_POST['username']) && !EMPTY($_POST['password'])){
// Inicio de sessão
@session_start();

// Leitura dos parâmetros de configurção do acesso à BD
require("config/config.php");

$portfolio_conn = mysql_connect(DB_SERVER, DB_UTILIZADOR, DB_PASSWORD);
mysql_select_db(DB_NOME, $portfolio_conn);

$sql_vutil=sprintf("SELECT * FROM members WHERE username='%s' AND password='%s'",$_POST['username'], $_POST['password']);
$res_vutil=mysql_query($sql_vutil);
$num_reg=mysql_num_rows($res_vutil);

if ($num_reg==1){ // se o utilizador existir e a password estiver correta

// Cria uma variável de sessão que indica que o login foi bem sucedido para controlo dos restantes form
$_SESSION['utilval']=1;
//header("Location: index.php"); 
?>
<script language="javascript">
alert("Olá Bem vindo!");
</script>

<?php
$_SESSION['user']=$_POST['username'];
}else{
echo ("<script>alert('Utilizador ou password inválido');</script>");
unset($_POST['username']);
unset($_POST['password']);
}


}else{
echo ("<script>alert('Introduza o seu utilizador e password');</script>");
unset($_POST['login']);
}
}
?> 

</p>
</div>
<!-- /////////////////////
///////////////
///////             menu principal
///////
//////////////
/////////////////////////
-->
<header class="">


       <div class="header_wrapper container">
<?php
if (!isset($_SESSION['user'])){
?>

<?php
} else {
?>
       <a href="index.html" class="logo"><img src="img/retina/logo.png" alt="" class="logo_retina" width="125" height="39"><?php echo 'Welcome,' ;?> <?php echo  $_SESSION['user'];?> </a>

<?php
}
?>
           <nav>

               <ul class="menu">
                   <li class="current-menu-parent"><a href="index.php">HOME</a>

                   </li>


                   <li><a href="javascript:void(0)">PORTFOLIO</a>
                       <ul class="sub-menu">
                           <li><a href="portfolio_grid.html">Grid Portfolio</a></li>
                           <li><a href="portfolio_masonry.html">Grid Portfolio with Masonry</a></li>
<li><a href="portfolio_post_fw.html">Fullscreen Portfolio Post</a></li>
                           <li><a href="portfolio1.html">Portfolio 1 Column</a></li>
                           <li><a href="portfolio2.html">Portfolio 2 Columns</a></li>
                           <li><a href="portfolio3.html">Portfolio 3 Columns</a></li>
                           <li><a href="portfolio4.html">Portfolio 4 Columns</a></li>
                           <li><a href="portfolio_post.html">Portfolio Post</a></li>
                       </ul>
                   </li>
                   <li><a href="javascript:void(0)">VIDEOS</a>
                       <ul class="sub-menu">
                           <li><a href="gallery_kenburns.html">Kenburns Gallery</a></li>
                           <li><a href="gallery_grid.html">Grid Gallery</a></li>
                           <li><a href="gallery_masonry.html">Grid Gallery with Masonry</a></li>
                       </ul>
                   </li>
                   <li><a href="javascript:void(0)">BLOG</a>
                       <ul class="sub-menu">
                           <li><a href="blog_fullscreen.html">Fullscreen</a></li>
                           <li><a href="blog_post_fw.html">Fullscreen Blog Post</a></li>
                           <li><a href="blog_full.html">Full Width</a></li>                            
                           <li><a href="blogpost_full.html">Blog Post</a></li>
                           <li><a href="javascript:void(0)">With Sidebar</a>
                               <ul class="sub-menu">
                                   <li><a href="blog_left.html">Left Sidebar</a></li>
                                   <li><a href="blog_right.html">Right Sidebar</a></li>
                                   <li><a href="blogpost_sidebar.html">Blog Post</a></li>
                               </ul>
                           </li>
                       </ul>
                   </li>
                   <li><a href="javascript:void(0)">CONTACTS</a>
                       <ul class="sub-menu">
                      <li><a href="contact_fullscreen.html">Fullscreen</a></li>
                           <li><a href="contact.html">Full Width</a></li>                            
                           <li><a href="contact_sidebar.html">With Sidebar</a></li>
                       </ul>
                   </li>
<li><a href="javascript:void(0)">FOLLOW</a>
                       <ul class="sub-menu">
                           <li><a href="typography.html">Typography</a></li>
                           <li><a href="shortcodes.html">Shortcodes</a></li>
                       </ul>
                   </li>
<li>
<?php
if (!isset($_SESSION['user'])){
?>
<a href="javascript:show_popup('my_popup')">LOGIN</a>
<ul class="sub-menu">
                           <li><a href="javascript:show_popup1('my_popup1')">REGISTO</a></li>
<?php
} else {
?>
<a> SETTINGS </a>
<ul class="sub-menu">
<a href="javascript:show_popup2('my_popup2')"> EDIT ACCOUNT </a>
<a href="javascript:show_popup3('my_popup3')"> EDIT PERFIL </a>
<a href="logout.php">LOGOUT</a>
<?php
}
?>


                       </ul>
                   </li>
               </ul><!-- .menu -->
               <div class="clear"></div>
           </nav>
       </div>
   </header>
  <!-- /////////////////////
///////////////
///////            slider do background
///////
//////////////
/////////////////////////
  -->


<!-- /////////////////////
///////////////
///////             popup do perfil
///////
//////////////
/////////////////////////
-->
<div id="my_popup2"  style="display:none;border:0px dotted gray;padding:.3em;background: rgba(255, 255, 255, 0.8);;position:absolute;width:600px;height:600x\px;left:380px;top:100px;z-index:+1;">
  <div align="right">
       <a href="javascript:hide_popup1('my_popup2')">close</a>
  </div>
        <form id="registo" name="registo" method="post" action="index.php"  />

<?php
$portfolio = mysql_connect('localhost' , 'root', '') or die ('Nao foi possivel estabelecer ligacao na base de dados');
mysql_select_db ('portfolio' , $portfolio) or die (mysql_error($portfolio)); 
?>     
<!-- /////////////////////
///////////////
///////             vai buscar os dados á base de dados
///////
//////////////
/////////////////////////
-->
 <?php
 $sql=sprintf("select * FROM members WHERE username='%s'",$_SESSION['user']);
 $res=mysql_query($sql) or die(mysql_error());
 $reg=mysql_fetch_array($res);


 $username=$reg['username'];
 $password=$reg['password'];
 $email=$reg['email'];
 ?>

<!-- /////////////////////
///////////////
///////            tabela para representar o "perfil"
///////
//////////////
/////////////////////////
-->
       <table class="center">

       <tr>
       <td >
       Nome :
       </td>
       <td>
       <?php
       echo $reg['username'];
       ?>
       </td>
       </tr>
       <tr>
       <td >
       password :
       </td>
       <td>
       <?php
       echo $reg['password'];
       ?>
       </td>
       </tr>
       <tr>
       <td >
       Mail :
       </td>
       <td>
       <?php
       echo $reg['email'];
       ?>
       </td>
       </tr>

       </table>

       <br />         
       </div>
       </div>
       </form>
<div id="my_popup3"  style="display:none;border:0px dotted gray;padding:.3em;background: rgba(255, 255, 255, 0.8);;position:absolute;width:600px;height:600x\px;left:380px;top:100px;z-index:+1;">
   <div align="right">
       <a href="javascript:hide_popup3('my_popup3')">close</a>
   </div>
<form id="form1" method="POST" action="index.php">
         <fieldset>
<Table cellspacing=0 border=0>
<tr>
<td align="Right"><font size="2">Nome:</font></td><td><input id="nome" type="text" name="nome" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Morada:</font></td><td><input id="morada" type="text" name="morada" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Número:</font></td><td><input id="numero" type="text" name="numero" ></td>
</tr>
<tr>
<td> </td><td><input id="alterar" name="alterar" type="submit" Value="Alterar"></td>
</tr>
</table>
         </fieldset>
       </form>
<?php
If(isset($_POST['alterar'])){


If(!EMPTY($_POST['nome']) && !EMPTY($_POST['morada'])  && !EMPTY($_POST['numero'])){


$nome=$_POST['nome'];
$email=$_POST['morada'];
$codigo=$_POST['numero'];
$user=$_SESSION['user'];

// Leitura dos parâmetros de configurção do acesso à BD
require("config/config.php");


//verificar se existe na base de dados



$update1 = sprintf("UPDATE members SET nome='$nome' , morada='$email', numero='$numero' WHERE user='$user'");
mysql_query($update1);

$_SESSION['nome']= $nome;
$_SESSION['email']= $email;
$_SESSION['codigo']= $codigo;
?>
<script type="text/javascript">
document.location= "index.php";
</script>
<?PHP
}
}
?>
</div>
</body>
</html>
Posted (edited)

O teu problema está na form, no action tens "index.php". O que podes fazer é enviar para uma página em branco que vai guardar os dados e depois essa vai para a index.php automaticamente.

<form id="form1" method="POST" action="index.php"> <--- Erro aqui
        <fieldset>
<Table cellspacing=0 border=0>
<tr>
<td align="Right"><font size="2">Nome:</font></td><td><input id="nome" type="text" name="nome" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Morada:</font></td><td><input id="morada" type="text" name="morada" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Número:</font></td><td><input id="numero" type="text" name="numero" ></td>
</tr>
<tr>
<td> </td><td><input id="alterar" name="alterar" type="submit" Value="Alterar"></td>
</tr>
</table>
        </fieldset>
    </form>
Edited by brunoais
geshi
Posted (edited)

O teu problema está na form, no action tens "index.php". O que podes fazer é enviar para uma página em branco que vai guardar os dados e depois essa vai para a index.php automaticamente.

<form id="form1" method="POST" action="index.php"> <--- Erro aqui
	 <fieldset>
<Table cellspacing=0 border=0>
<tr>
<td align="Right"><font size="2">Nome:</font></td><td><input id="nome" type="text" name="nome" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Morada:</font></td><td><input id="morada" type="text" name="morada" ></td>
</tr>
<tr>
<td align="Right"><font size="2">Número:</font></td><td><input id="numero" type="text" name="numero" ></td>
</tr>
<tr>
<td> </td><td><input id="alterar" name="alterar" type="submit" Value="Alterar"></td>
</tr>
</table>
	 </fieldset>
 </form>

Continuo a não conseguir 😞

Ele não deteta a varievel de sessão $username, não estou a ver porque...

processar_login.php

<?php
//verifcar se os campos estao preenchidos
if (!empty($_POST) AND (empty($_POST['username']) AND (empty($_POST['password'])))) {
echo("<script> alert(' Por favor insira username e password'); </script>");
exit;
}
//ligar a base de dados
$ligacao = mysql_connect('localhost' , 'root', '') or die ('Nao foi possivel estabelecer ligacao na base de dados');
mysql_select_db ('portfolio' , $ligacao) or die (mysql_error($ligacao));
//definir variaveis de sessão
$username=$_POST['username'];
$password=$_POST['password'];
$id=$_POST['id'];
 $username1=$_POST['nome'];

//consultar a base de dados
$sql="Select username, password FROM members WHERE username='$usernamename' AND password='$password'";
$consulta = mysql_query($sql);

//verificar se foram devolvidos dados
if (mysql_num_rows($consulta) == 1) {
header("location: index.html");
exit;
}
else{
echo("<script> alert('username e password estão errados'); </script>");
header("Location: login.php");
exit;
}
mysql_free_result($consulta);
?>

processar_editar.php

<?php
session_start();
?>
<?php
include "bd.php";
//definir variaveis de sessão
$id=$_POST['id'];
$nome=$_POST['nome'];
$morada=$_POST['morada'];
$numero=$_POST['numero'];

// verifica se os campos foram preenchidos
if (empty($username)   )
header("Location: erro.html");
else{

//Alterar os dados
if (isset($_POST['alterar'])){  
mysql_query ($update=($update=("UPDATE members SET nome='$nome', morada='$morada', numero='numero' WHERE username='$user'")))or die (mysql_error());
}
//Confirmação de registo

header("Location: index.php"); }
exit;

?>

<form id="registo" name="registo" method="post" action="processar_editar.php"  />
<?php

  //definir variaveis
  $nome=$reg['nome'];
  $user=$reg['user'];
  $morada=$reg['morada'];
  $numero=$reg['numero'];




?>

  <table class="center">
		   <tr>
  <td >
   username :
  </td>
  <td><?php echo $reg['username'];?>
  </td>
 </tr>
 <tr>
  <td >
   Nome :
  </td>
  <td><input type="text" name="nome" value="<?php echo $reg['nome'];?>"/></p>				  
  </td>
 </tr>

 <tr>
  <td >
   Morada :
  </td>
  <td><input type="text" name="morada" value="<?php echo $reg['morada'];?>"/></p>
  </td>
 </tr>
 <tr>
  <td >
   Numero :
  </td>
  <td><input type="text" name="numero" value="<?php echo $reg['numero'];?>"/></p>
  </td>
 </tr>



 </table>
	<input type="submit" name="alterar" id="alterar" value="alterar"/>
			<br />

  </div>
</div>
</form>
Edited by guarana1
Posted (edited)

Ele não deteta a varievel de sessão $username, não estou a ver porque...

Que confusão que vai praí.

E onde que estás a declarar o $username? Assim pelo teu código parece que a variável $username caiu do céu.

Edited by Devexz

Contador de calorias: caloriaspordia.com

Posted (edited)

Que confusão que vai praí.

E onde que estás a declarar o $username? Assim pelo teu código parece que a variável $username caiu do céu.

No processar_login.php

//definir variaveis de sessão
$username=$_POST['username'];
$password=$_POST['password'];
$id=$_POST['id'];
Edited by guarana1
Posted
Em 14/10/2013 às 23:30, Devexz disse:

mas estás a fazer isto:


if (empty($username)   )
header("Location: erro.html");

no processar_editar onde o $username não está definido

Já defini no editar... mas não esta a dar. Há alguma coisa nisto que não estou a perceber. O mais provavel é que estou a definir mal a variavel...

//definir variaveis de sessão
$id=$_POST['id'];
$username=$_POST['username'];
$nome=$_POST['nome'];
$morada=$_POST['morada'];
$numero=$_POST['numero'];
Posted (edited)

não podes espetar com o código que nós dizemos assim à toa, tens de perceber:

$username=$_POST['username'];

O que estás a fazer acima é dar o valor do post à variavel $username.

Agora diz-me onde é que esse POST vem? Não será do formulário editar dados? Ah! pera tu nem sequer tens algum input do "username" no form!

Edited by Devexz

Contador de calorias: caloriaspordia.com

Posted

não podes espetar com o código que nós dizemos assim à toa, tens de perceber:

$username=$_POST['username'];

O que estás a fazer acima é dar o valor do post à variavel $username.

Agora diz-me onde é que esse POST vem? Não será do formulário editar dados? Ah! pera tu nem sequer tens algum input do "username" no form!

O valor do post vem do index.php, não pus o código do index porque está muito confuso, ninguem ia ter paciencia de ver aquilo, porque está uma confusão. Apenas pus uma pequena parte do código. Mas de qq maneira, o assunto já esta resolvido, decidi usar outra variavel, em vez da username...

Tinha mostrado o código ao meu professor de PSINF (ele diz que percebe de php), e ele não consegiu ver porque é que não estava a alterar os dados.

Mas depois, como já diz, usei outra variavel, e consegui.

Posted

tu não podes receber um post de duas páginas php ao mesmo tempo, logo há qualquer coisa que não bate certo.

Se para alterar os dados recebes o post do editar.php e depois dizes que também defines o $username com o post que vem do index.php há qualquer coisa que estranho...

Enfim se o teu professor soubesse PHP facilmente tinha te puxado as orelhas e explicado a lógica por trás disso.

Mas se o problema está resolvido... resolvido está. 😉

Contador de calorias: caloriaspordia.com

Posted

tu não podes receber um post de duas páginas php ao mesmo tempo, logo há qualquer coisa que não bate certo.

Se para alterar os dados recebes o post do editar.php e depois dizes que também defines o $username com o post que vem do index.php há qualquer coisa que estranho...

Enfim se o teu professor soubesse PHP facilmente tinha te puxado as orelhas e explicado a lógica por trás disso.

Mas se o problema está resolvido... resolvido está. 😉

Sou capaz de saber mais de php do que ele, poh 😞

E como já viste, não sei muito...

Posted

Não vais aprender tudo à primeira, devagar vai se ao longe, e com o tempo hás-de habituar.

Eu percebo, mas o stor dá prazos muito pequenos para fazer as coisas, nas aulas não consigo fazer muita coisa, então tenho que me safar em casa... e em casa não tenho ninguem que me possa ajudar nisto. Entao venho para o fórum...

Posted
Em 17/10/2013 às 14:58, Devexz disse:

não tens ninguém?

todos nós temos alguém que ajuda-nos em tudo basta perguntar-lhe da maneira correta e ele dá-te todas as soluções dos mais diversos problemas e essa pessoa é:

professorbambo2013.jpg

 

Estava a referir-me ao Google 🙂

O único sitio onde posso ser ajudado é aqui... não tenho nenhuns conhecidos nesta area.

O google nem sempre consegue resolver os meus problemas 😞

Posted

foste e serás

eu teria ajudado, mas como sou anti sociável, e tenho o costume de ignorar posts mal apresentados nem me dei ao trabalho

Para a próxima vou tentar apresentar melhor o problema

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.