FunTrixMedlem sedan okt. 2003118 inlägg hejsan...!
varför får jag upp mitt egna felmedelande att det inte gick att byta lösenord?
vad har jag gjort för fel och hur fixar jag till det?
<?php
session_start(); // Alltid överst på sidan
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}
?>
<?php
include "conn.php"; // Databasanslutningen
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style2 {font-size: 18px}
-->
</style>
</head>
<body>
<form name="form1" method="post" action="">
<table width="61%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Byt lösenord </td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php if(empty($_POST['pass']))
$pass = "not set";
if(!empty($_POST['pass']))
{
$pass = md5($_POST['pass']);
$update = "UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}";
mysql_query($update) or die("Det gick inte att byta lösenord, försök igen!");
print("Du har nu bytt lösenord.");
}
?>
<br>
Ditt nya lösenord: <br>
<input name="pass" type="text" id="pass2"></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Byt lösenord"></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
GunnarDMedlem sedan juni 20014 290 inlägg Kör mysql_error() efter mysql_query() då skrivs eventuella felmeddelande ut som mysql genererar.
PeddaMedlem sedan juni 20006 032 inlägg Ser lite konstigt ut
1. du har ingen action på formuläret
2. Om lösenordet är tomt så sätter du det till no pass, vilket innebär att när du kollar det andra gången så är det aldrig tomt, inte ens om formuläret var tomt när det skickades.
3. Var får du ett värde på $id? I conn.php?
FunTrixMedlem sedan okt. 2003118 inlägg 1. action är tillagt.
2. så vi ska ta bort empty alltså?
så att t.ex. den översta raden blir så här:
<?php $_POST['pass']
3. ingenstans... hur skriver jag ut det?
PeddaMedlem sedan juni 20006 032 inlägg 2. Ett förslag på hur du kan kolla om lösenordet är ifyllt:
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
echo "Du glömde fylla i lösenordet.";
exit;
}
3. Du använder ju $id i din sql sats, nånstans måste du ju få det ifrån.
$update = ("UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}") or die (mysql_error());
red/ vad får du för felmeddelande om du lägger till or die (mysql_error()); på din sql sats?
FunTrixMedlem sedan okt. 2003118 inlägg jo jag har ju id i min databas...
men tänkte att du menade att det skulle vara utskrivet någonstans, så att man skulle hämta det osv tidigare i dokumentet.
PeddaMedlem sedan juni 20006 032 inlägg Det jag menar är var ger du variabeln id ett värde?
fiddlerMedlem sedan juli 20023 617 inlägg Vad lagrar du egentligen i sess_user? Kan du använda det istället för id?
FunTrixMedlem sedan okt. 2003118 inlägg japp sess_user ska fungera istället för id, ska jag byta ut id mot sess_user lr?
FunTrixMedlem sedan okt. 2003118 inlägg jag ger variabeln id ett värde på bli medlems sidan, där alla medlemmar blir tilldelade ett id...
så tänkte använda id för att kolla att man uppdaterar rätt persons lösenord...
PeddaMedlem sedan juni 20006 032 inlägg Ville bara kolla så variabeln inte var tom, har den ett värde så kan du så klart använda den.
Du kan ju testa att skriva ut $id för att kolla så den inte är tom.
echo $id;
fiddlerMedlem sedan juli 20023 617 inlägg
FunTrix skrev:
japp sess_user ska fungera istället för id, ska jag byta ut id mot sess_user lr?
Det beror på vad du lagrade i sess_user vid inloggningen. Precis som Pedda säger så kan felet bero på att du inte har något värde på $id.
FunTrixMedlem sedan okt. 2003118 inlägg nejdå... ett id tilldelas varje ny medlem som registrerar sig... sess_user kan dock krångla ibland när du ska använda det ute på sidan så skulle helst vilja att id fungerar...
PeddaMedlem sedan juni 20006 032 inlägg Jag brukar sätta flera sessioner vid inloggningen, bland annat sess_user och sess_id.
Alltid bra att ha dom till hands.
FunTrixMedlem sedan okt. 2003118 inlägg okej.... men tänkte på en annan sak, vart ska jag lägga in din kod som kontrollerar om man fyllt i något lösenord... skickar med en kod där den visar det hela tiden har testat att flytta ned den också och då visar den det inte alls...
<?php if(empty($_POST['pass']))
$pass = "not set";
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
echo "Du glömde fylla i lösenordet.";
exit;
}
if(!empty($_POST['pass']))
{
$pass = md5($_POST['pass']);
$update = "UPDATE npmedlemmar SET pass={$pass} WHERE id={$id}";
mysql_query($update) or die("Det gick inte att byta lösenord, försök igen!");
print("Du har nu bytt lösenord.");
}
?>
PeddaMedlem sedan juni 20006 032 inlägg Du behöver inte ha dina ifsatser
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
echo "Du glömde fylla i lösenordet.";
exit;
}
// Fältet är inte tomt då kör vi in det i databasen
$pass = md5($_POST['pass']);
mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE id='{$id}'") or die("Det gick inte att byta lösenord");
print("Du har nu bytt lösenord.");
red/ ändrade lite i koden. (sql satsen)
FunTrixMedlem sedan okt. 2003118 inlägg testade att byta ut mot din kod, den visar att man glömde fylla i lösenordet direkt när man kommer in på sidan då också :(
även den senaste som du postade.
PeddaMedlem sedan juni 20006 032 inlägg Lägg allt detta direkt efter include('conn.php'); istället.
<?php
if (isset($_POST['Submit'])) {
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['pass'])) {
echo "Du glömde fylla i lösenordet.";
exit;
}
// Fältet är inte tomt då kör vi in det i databasen
$pass = md5($_POST['pass']);
mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE id='{$id}'") or die("Det gick inte att byta lösenord");
print("Du har nu bytt lösenord.");
}
?>
PeddaMedlem sedan juni 20006 032 inlägg Har en känsla av att du inte har något värde på $id.
Testa med
mysql_query("UPDATE npmedlemmar SET pass='{$pass}' WHERE user='{$_SESSION['sess_user']}'") or die("Det gick inte att byta lösenord");
ändra user om det inte är det tabellnamnet du har.