För det första så har jag ett registrerings skript som funkar finnemang...jag har nu byggt ett skript där de registrerade medlemmarna kan ändra vissa saker i sin profil, men det funkar inte 100%... har problem med att updatera databasen med de nya uppgifterna.
Så här ser profil.php ut
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>profil</title>
<link href="../setts/style.css" rel="stylesheet" type="text/css" />
</head>
<body class="main">
<?php
include "../setts/funcs.php";
include "../setts/conn.php";
$sql = "SELECT * FROM $mem_table WHERE ID = '10'";
$result = mysql_query($sql)or die(mysql_error());
while ($line = mysql_fetch_array($result,MYSQL_ASSOC)){
$test = $line[user];
if (isset($_POST['submit'])){
$user = $_POST['user2'];
$pass = $_POST['passwd1'];
$pass2 = $_POST['passwd2'];
$fornamn = $_POST['fornamn'];
$efternamn = $_POST['efternamn'];
$stad = $_POST['stad'];
$epost = $_POST['epost'];
$msn = $_POST['msn'];
$skype = $_POST['skype'];
$hemsida = $_POST['hemsida'];
$nyhetsbrev = $_POST['nyhetsbrev'];
// Kolla om användarnamnet är upptaget
$sql = "SELECT COUNT(*) FROM $mem_table WHERE user='{$_POST['user2']}'";
$result = mysql_query($sql);
if (mysql_result($result, 0) > 0) {
$reg_error[] = 1;
}
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
check_falt($user,$pass,$epost,$nyhetsbrev);
check_pass_langd($pass);
check_pass($pass,$pass2);
check_epost($epost);
check_hemsida($hemsida);
check_no_error($user,$pass,$fornamn,$efternamn,$stad,$epost,$msn,$skype,$hemsida,$nyhetsbrev);
}
else {
// Sätt variabler för tomt formulär
for ($i=0; $i<4; $i++) {
$back[$i] = "";
}
}
//Error log
$error_list[0] = "Alla fält är inte infyllda";
$error_list[1] = "Användarnamnet är upptaget";
$error_list[2] = "Lösenordet måste vara längre än 5 tecken";
$error_list[3] = "Lösenorden stämmer inte överrens";
$error_list[4] = "Svaret du angav var fel";
$error_list[5] = "E-post adressen verkar vara felaktig";
$error_list[6] = "Hemside adressen verkar vara felaktig";
?>
<?php
// skriver ut eventuella fel
if (isset($reg_error)){
echo "Något blev fel:<br>\n";
echo "<ul>\n";
for ($i=0; $i<sizeof($reg_error); $i++) {
echo "<li>{$error_list[$reg_error[$i]]}</li>\n";
}
echo "</ul>\n";
$back[0] = stripslashes($_POST['user2']);
$back[2] = stripslashes($_POST['name']);
$back[3] = stripslashes($_POST['email']);
}
?>
<form action="profil.php" method="post">
Här kan du redigera din profil <?php echo $line['user']; ?><br /><br />
Nytt Lösenord:<br />
<input type="password" name="passwd1" class="field" value="" />*<br />
Repetera lösenord:<br />
<input type="password" name="passwd2" class="field" value="" />*<br />
Förnamn:<br />
<input type="text" name="fornamn" class="field" value="<? echo$line[fornamn]?>" /><br />
Efternamn:<br />
<input type="text" name="efternamn" class="field" value="<? echo$line[efternamn]?>" /><br />
Stad:<br />
<input type="text" name="stad" class="field" value="<? echo$line[stad]?>" /><br />
E-post:<br />
<input type="text" name="epost" class="field" value="<? echo$line[epost]?>" />*<br />
MSN:<br />
<input type="text" name="msn" class="field" value="<? echo$line[msn]?>" /><br />
Skype:<br />
<input type="text" name="skype" class="field" value="<? echo$line[skype]?>" /><br />
Hemsida:<br />
<input type="text" name="hemsida" class="field" value="<? echo$line[hemsida]?>" /><br />
Nyhetsbrev:<br />
<input name="nyhetsbrev" type="radio" value="ja" />Ja
<input name="nyhetsbrev" type="radio" value="nej" />Nej
<br /><br />
<input name="submit" type="submit" class="field" value="Spara" />
</form>
<?
}
?>
</body>
</html>
Så här ser funktionerna ut
function check_falt($user,$pass,$epost,$nyhetsbrev){
//Kolla efter tomma fält
if (empty($pass) || empty($epost) || empty($nyhetsbrev)) {
$reg_error[] = 0;
}
}
function check_pass_langd($pass){
//Kolla så att lösenorden är längre än 5 tecken
if (strlen($pass)<5){
$reg_error[] = 2;
}
}
function check_pass($pass,$pass2){
// Kolla så att lösenorden stämmer överrens
if ($pass != $pass2) {
$reg_error[] = 3;
}
}
function check_epost($epost){
// Kolla om e-post kan tänkas vara ok
if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/', $epost)) {
$reg_error[] = 5;
}
}
function check_hemsida($hemsida){
// Kolla om hemsida kan tänkas vara ok
if (!empty($hemsida)){
if (!preg_match('/^[www]+[.][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/', $hemsida)) {
$reg_error[] = 6;
}
}
}
function check_no_error($pass,$fornamn,$efternamn,$stad,$epost,$msn,$skype,$hemsida,$nyhetsbrev){
// Inga fel? Spara
if (!isset($reg_error)) {
$sql = "UPDATE $mem_table SET pass='$pass', fornamn='$fornamn', efternamn='$efternamn', stad='$stad', epost='$epost', msn='$msn', hemsida='$hemsida', nyhetsbrev='$nyhetsbrev', skype='$skype' WHERE ID ='10'";
$send = mysql_query($sql) or die(mysql_error());
echo "<br /><br />Välkommen: <strong>$user</strong><br />
Du kan nu logga in och delta i medlemsktiviteterna!";
}
ob_end_flush();
}
jag la varje check i en egen funktion så att jag kan använda varje enskild check senare om det behövs. Men när jag väl ska spara min informatiojn blir det mysql fel, och jag vet inte riktigt varför. Man kanske inte alls kan göra på detta sätt?
mysql felet
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET pass='', fornamn='', efternamn='', stad='', epost='', msn='', hemsida='', ny' at line 1