Update gebruiker
https://www.youtube.com/watch?v=LIMoLDB3d8k
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php require "php_conectie/Connectie2.php";?>
<?php
error_reporting(E_ALL);
ini_set('display_errors',true);
session_start();
if(isset($_SESSION["UserID"])){
}else{
header('Location: Login.php');
}
?>
<?php
$User = $_SESSION["UserID"];
$result = $con->query("select * from user where UserID='$User'");
$row = $result->fetch_array(MYSQLI_BOTH);
$_SESSION["FirstName"] = $row['Fname'];
$_SESSION["LastName"] = $row['Lname'];
$_SESSION["Email"] = $row['Email'];
$_SESSION["PW"] = $row['Password'];
?>
<?php
if(isset($_POST['Update'])){
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$sql = $con->query("UPDATE user SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$UpdateFPassword}' where UserID= $User");
header ('Location: Account.php');
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>
<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="Container">
<div class="Header"></div>
<div class="Menu">
<div id="Menu">
<nav>
<ul class="cssmenu">
<li><a href="Account.php">Account</a></li>
<li><a href="LogOut.php">Uitloggen</a></li>
</ul>
</nav>
</div>
</div>
<div class="LeftBody"></div>
<div class="RightBody">
<form action="" method="post" name="form1">
<div class="FormElement">
<input name="FirstName" type="text" required="required" class="TField" id="FirstName" placeholder="Voornaam" value="<?php echo $_SESSION["FirstName"];?>">
</div>
<div class="FormElement">
<input name="LastName" type="text" required="required" class="TField" id="LastName" placeholder="Achternaam" value="<?php echo $_SESSION["LastName"];?>">
</div>
<div class="FormElement">
<input name="Email" type="email" required="required" class="TField" id="Email" placeholder="E-mail" value="<?php echo $_SESSION["Email"];?>">
</div>
<div class="FormElement">
<input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Wachtwoord" value="<?php echo $_SESSION["PW"];?>">
</div>
<div class="FormElement">
<input name="Update" type="submit" class="button" id="Update" value="Update info" >
</div>
</form>
</div>
<div class="Footer"></div>
</div>
</body>
</html>
<?php
error_reporting(E_ALL);
ini_set('display_errors',true);
session_start();
if(isset($_SESSION["UserID"])){
}else{
header('Location: Login.php');
}
?>
<?php
$User = $_SESSION["UserID"];
$result = $con->query("select * from user where UserID='$User'");
$row = $result->fetch_array(MYSQLI_BOTH);
$_SESSION["FirstName"] = $row['Fname'];
$_SESSION["LastName"] = $row['Lname'];
$_SESSION["Email"] = $row['Email'];
$_SESSION["PW"] = $row['Password'];
?>
<?php
if(isset($_POST['Update'])){
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$sql = $con->query("UPDATE user SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$UpdateFPassword}' where UserID= $User");
header ('Location: Account.php');
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>
<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="Container">
<div class="Header"></div>
<div class="Menu">
<div id="Menu">
<nav>
<ul class="cssmenu">
<li><a href="Account.php">Account</a></li>
<li><a href="LogOut.php">Uitloggen</a></li>
</ul>
</nav>
</div>
</div>
<div class="LeftBody"></div>
<div class="RightBody">
<form action="" method="post" name="form1">
<div class="FormElement">
<input name="FirstName" type="text" required="required" class="TField" id="FirstName" placeholder="Voornaam" value="<?php echo $_SESSION["FirstName"];?>">
</div>
<div class="FormElement">
<input name="LastName" type="text" required="required" class="TField" id="LastName" placeholder="Achternaam" value="<?php echo $_SESSION["LastName"];?>">
</div>
<div class="FormElement">
<input name="Email" type="email" required="required" class="TField" id="Email" placeholder="E-mail" value="<?php echo $_SESSION["Email"];?>">
</div>
<div class="FormElement">
<input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Wachtwoord" value="<?php echo $_SESSION["PW"];?>">
</div>
<div class="FormElement">
<input name="Update" type="submit" class="button" id="Update" value="Update info" >
</div>
</form>
</div>
<div class="Footer"></div>
</div>
</body>
</html>
en check ook even of de query gelukt is.
je redirect nu botweg naar een pagina, maar je weet daardoor niet of alles wel lukte en waarom niet.
---
trouwens wat zonde om op regel 13 ev. de user op te halen, als je eventueel nog een update gaat uitvoeren en daarna redirect en dus de data opgehaald hebt voor niets.
---
regel 6 zou een foutmelding moeten geven omdat je op regel 1 ¿> gebruikt en op regel 2, na een ENTER, weer <¿php hebt staan.
Daar zou een Headers-Already-Sent error uit moeten komen.
Ivo P op 23/09/2015 13:52:44:
regel 6 zou een foutmelding moeten geven omdat je op regel 1 ¿> gebruikt en op regel 2, na een ENTER, weer <¿php hebt staan.
Daar zou een Headers-Already-Sent error uit moeten komen.
Daar zou een Headers-Already-Sent error uit moeten komen.
:)
Volgens mij was dat een dingetje van PHP, deze stript een newline nadat je een php-blok afsluit met ?>. Dus je krijgt geen headers sent error denk ik.
Zet na een header('Location: ...') wel altijd een exit;
Daarnaast ben ik die tutorial ook aan het volgend voor de gein, volgens mij klopt er geen biet van de character encoderingen.
Wat je nog aan verbeteringen zou kunnen aanbrengen is oa controleren of je queryresultaten hebt voordat je ze ophaalt, mogelijk lost dat iets op.
Gewijzigd op 23/09/2015 14:21:28 door Thomas van den Heuvel
Thomas van den Heuvel op 23/09/2015 14:17:46:
:)
Volgens mij was dat een dingetje van PHP, deze stript een newline nadat je een php-blok afsluit met ?>. Dus je krijgt geen headers sent error denk ik.
Zet na een header('Location: ...') wel altijd een exit;
Daarnaast ben ik die tutorial ook aan het volgend voor de gein, volgens mij klopt er geen biet van de character encoderingen.
Wat je nog aan verbeteringen zou kunnen aanbrengen is oa controleren of je queryresultaten hebt voordat je ze ophaalt, mogelijk lost dat iets op.
Ivo P op 23/09/2015 13:52:44:
regel 6 zou een foutmelding moeten geven omdat je op regel 1 ¿> gebruikt en op regel 2, na een ENTER, weer <¿php hebt staan.
Daar zou een Headers-Already-Sent error uit moeten komen.
Daar zou een Headers-Already-Sent error uit moeten komen.
:)
Volgens mij was dat een dingetje van PHP, deze stript een newline nadat je een php-blok afsluit met ?>. Dus je krijgt geen headers sent error denk ik.
Zet na een header('Location: ...') wel altijd een exit;
Daarnaast ben ik die tutorial ook aan het volgend voor de gein, volgens mij klopt er geen biet van de character encoderingen.
Wat je nog aan verbeteringen zou kunnen aanbrengen is oa controleren of je queryresultaten hebt voordat je ze ophaalt, mogelijk lost dat iets op.
Laat even weten als jij die wel werkend heb gekregen...
Toevoeging op 23/09/2015 15:26:21:
Thomas van den Heuvel op 23/09/2015 14:17:46:
:)
Volgens mij was dat een dingetje van PHP, deze stript een newline nadat je een php-blok afsluit met ?>. Dus je krijgt geen headers sent error denk ik.
Zet na een header('Location: ...') wel altijd een exit;
Daarnaast ben ik die tutorial ook aan het volgend voor de gein, volgens mij klopt er geen biet van de character encoderingen.
Wat je nog aan verbeteringen zou kunnen aanbrengen is oa controleren of je queryresultaten hebt voordat je ze ophaalt, mogelijk lost dat iets op.
Ivo P op 23/09/2015 13:52:44:
regel 6 zou een foutmelding moeten geven omdat je op regel 1 ¿> gebruikt en op regel 2, na een ENTER, weer <¿php hebt staan.
Daar zou een Headers-Already-Sent error uit moeten komen.
Daar zou een Headers-Already-Sent error uit moeten komen.
:)
Volgens mij was dat een dingetje van PHP, deze stript een newline nadat je een php-blok afsluit met ?>. Dus je krijgt geen headers sent error denk ik.
Zet na een header('Location: ...') wel altijd een exit;
Daarnaast ben ik die tutorial ook aan het volgend voor de gein, volgens mij klopt er geen biet van de character encoderingen.
Wat je nog aan verbeteringen zou kunnen aanbrengen is oa controleren of je queryresultaten hebt voordat je ze ophaalt, mogelijk lost dat iets op.
Is het al inmiddels gelukt?
Toevoeging op 23/09/2015 17:59:12:
?
1. Regel 3 start de sessie regel 17 herhaald regel 3 op niets af.
2. Hij werkt met "capitalizedLetters" in classes en id's en ook in php array's $SESSION[], doe dit nooit.
3. De headers worden al verzonden doordat er op regel 1 een linebreak staat, en als een nieuwe gebruiker langs komt word er een nieuwe sessie gemaakt waarvan UserId niet bestaat, zondoende doet 'header("location: LogIn.php")' helemaal niets en loopt het script gewoon verder en word er een query uitgevoerd die niet bestendig is tegen mysql injecties.
Op schaal van 0 tot 10 op veiligheid is dit toch wel een 2je aangezien jouw browser ook een redirect (header("Location: ...")) gewoon kan negeren via een plugin.
Daarbij kan regel 4->7 (of bij jouw 7 t/m 10)gewoon:
Kortom, leer niet van deze gast want hij bakt er niets van.
Wat er fout gaat in dit script is doordat jouw form niet gelinked staat met PHP. Specefiek:
Code (php)
1
2
2
<form action="" method="post" name="form1"> ->
<form action="updateAccount.php" method="post">
<form action="updateAccount.php" method="post">
Gewijzigd op 23/09/2015 23:30:29 door Johan K
Notice: Undefined variable: POST in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 28
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Warning: file_get_contents(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 35
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36 Warning: getimagesize(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 39
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if(isset($_POST['Update'])){
//De image uit het form wordt opgeslagen in een variabele.
$profileImage = $POST["myimg"]; //<------------- error
//Upload van afbeelding naar server en database.
$resultaat = mysqli_query($con, "SELECT MAX(UserID) FROM users");//Kijkt of database image bestaat.
$rij = mysqli_fetch_array($resultaat);
$rij = $rij['MAX(UserID)'] + 1;//Verandert de naam in een nummer van de foto aan de hand van de database + 1.
$image = addslashes(file_get_contents($_FILES['myimg']['tmp_name'])); //<------------- error
$image_name = addslashes($_FILES['myimg']['name']);//Naam bestand. //<------------- error
$imageSize = getimagesize($_FILES['myimg']['tmp_name']);//Grootte bestand. //<------------- error
$filePath = "images/profilephoto/".$image_name;//Locatie en naam van het bestand dat is geupload.
move_uploaded_file($_FILES['myimg']['tmp_name'], "images/profilephoto/".$image_name);//Plaatst de foto op de server //<------------- error
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$StorePassword = password_hash($UpdateFPassword, PASSWORD_BCRYPT, array('cost' => 10));
$sql = $con->query("UPDATE users SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$StorePassword}' , ProfileImage='{$image_name}' , ProfilePath='{$filePath}', WHERE UserID= $ID");
}
?>
if(isset($_POST['Update'])){
//De image uit het form wordt opgeslagen in een variabele.
$profileImage = $POST["myimg"]; //<------------- error
//Upload van afbeelding naar server en database.
$resultaat = mysqli_query($con, "SELECT MAX(UserID) FROM users");//Kijkt of database image bestaat.
$rij = mysqli_fetch_array($resultaat);
$rij = $rij['MAX(UserID)'] + 1;//Verandert de naam in een nummer van de foto aan de hand van de database + 1.
$image = addslashes(file_get_contents($_FILES['myimg']['tmp_name'])); //<------------- error
$image_name = addslashes($_FILES['myimg']['name']);//Naam bestand. //<------------- error
$imageSize = getimagesize($_FILES['myimg']['tmp_name']);//Grootte bestand. //<------------- error
$filePath = "images/profilephoto/".$image_name;//Locatie en naam van het bestand dat is geupload.
move_uploaded_file($_FILES['myimg']['tmp_name'], "images/profilephoto/".$image_name);//Plaatst de foto op de server //<------------- error
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$StorePassword = password_hash($UpdateFPassword, PASSWORD_BCRYPT, array('cost' => 10));
$sql = $con->query("UPDATE users SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$StorePassword}' , ProfileImage='{$image_name}' , ProfilePath='{$filePath}', WHERE UserID= $ID");
}
?>
Toevoeging op 16/10/2015 13:20:58:
Enrico van der List op 16/10/2015 13:20:20:
Hij werkt wel weer bijna alleen krijg ik nu errors terwijl ik wel kan uploaden met dezelfde code op een andere pagina...
Notice: Undefined variable: POST in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 28
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Warning: file_get_contents(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 35
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36 Warning: getimagesize(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 39
Notice: Undefined variable: POST in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 28
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Warning: file_get_contents(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 34
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 35
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36 Warning: getimagesize(): Filename cannot be empty in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 36
Notice: Undefined index: myimg in /home/i296429/domains/i296429.iris.fhict.nl/public_html/page/WP31/Week1/UpdateAccount.php on line 39
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
if(isset($_POST['Update'])){
//De image uit het form wordt opgeslagen in een variabele.
$profileImage = $POST["myimg"]; //<------------- error
//Upload van afbeelding naar server en database.
$resultaat = mysqli_query($con, "SELECT MAX(UserID) FROM users");//Kijkt of database image bestaat.
$rij = mysqli_fetch_array($resultaat);
$rij = $rij['MAX(UserID)'] + 1;//Verandert de naam in een nummer van de foto aan de hand van de database + 1.
$image = addslashes(file_get_contents($_FILES['myimg']['tmp_name'])); //<------------- error
$image_name = addslashes($_FILES['myimg']['name']);//Naam bestand. //<------------- error
$imageSize = getimagesize($_FILES['myimg']['tmp_name']);//Grootte bestand. //<------------- error
$filePath = "images/profilephoto/".$image_name;//Locatie en naam van het bestand dat is geupload.
move_uploaded_file($_FILES['myimg']['tmp_name'], "images/profilephoto/".$image_name);//Plaatst de foto op de server //<------------- error
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$StorePassword = password_hash($UpdateFPassword, PASSWORD_BCRYPT, array('cost' => 10));
$sql = $con->query("UPDATE users SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$StorePassword}' , ProfileImage='{$image_name}' , ProfilePath='{$filePath}', WHERE UserID= $ID");
}
?>
//De image uit het form wordt opgeslagen in een variabele.
$profileImage = $POST["myimg"]; //<------------- error
//Upload van afbeelding naar server en database.
$resultaat = mysqli_query($con, "SELECT MAX(UserID) FROM users");//Kijkt of database image bestaat.
$rij = mysqli_fetch_array($resultaat);
$rij = $rij['MAX(UserID)'] + 1;//Verandert de naam in een nummer van de foto aan de hand van de database + 1.
$image = addslashes(file_get_contents($_FILES['myimg']['tmp_name'])); //<------------- error
$image_name = addslashes($_FILES['myimg']['name']);//Naam bestand. //<------------- error
$imageSize = getimagesize($_FILES['myimg']['tmp_name']);//Grootte bestand. //<------------- error
$filePath = "images/profilephoto/".$image_name;//Locatie en naam van het bestand dat is geupload.
move_uploaded_file($_FILES['myimg']['tmp_name'], "images/profilephoto/".$image_name);//Plaatst de foto op de server //<------------- error
$UpdateFName = $_POST['FirstName'];
$UpdateLName = $_POST['LastName'];
$UpdateEmail = $_POST['Email'];
$UpdateFPassword = $_POST['Password'];
$StorePassword = password_hash($UpdateFPassword, PASSWORD_BCRYPT, array('cost' => 10));
$sql = $con->query("UPDATE users SET Fname = '{$UpdateFName}', Lname = '{$UpdateLName}', Email='{$UpdateEmail}', Password='{$StorePassword}' , ProfileImage='{$image_name}' , ProfilePath='{$filePath}', WHERE UserID= $ID");
}
?>
Gewijzigd op 16/10/2015 13:35:24 door Enrico van der List
Stop met het gebruiken van hoofdletters in je bestandnamen. Dit gaat problemen opleveren later als het op een Linux distrubutie staat.
Gebruik gewoon lowercase en streepjes. Linux-word-daar-blijer-van, en wij ook.
Rickert Bombaklats op 16/10/2015 13:29:06:
Enrico, kleine tip.
Stop met het gebruiken van hoofdletters in je bestandnamen. Dit gaat problemen opleveren later als het op een Linux distrubutie staat.
Gebruik gewoon lowercase en streepjes. Linux-word-daar-blijer-van, en wij ook.
Stop met het gebruiken van hoofdletters in je bestandnamen. Dit gaat problemen opleveren later als het op een Linux distrubutie staat.
Gebruik gewoon lowercase en streepjes. Linux-word-daar-blijer-van, en wij ook.
maar waarom doet de code het wel op een andere pagina en andere projecten en deze weer niet...
enctype="multipart/form-data"
bent vergeten in je <form> tag.
(EDIT: dit zorgt ervoor dat je files kunt uploaden, anders worden deze simpelweg niet meegestuurd als je je formulier post)
Daarnaast trekt die tutorial reeks op stront. Ik heb de maker al verzocht deze reeks offline te halen. Voor zowel de variant met als zonder password-hashing heb ik bewezen en aangetoond dat deze beide vatbaar zijn voor SQL-injectie. Los van de enorme security-gaten mist de applicatie die in die serie wordt gebouwd ook een heleboel logica.
Gewijzigd op 16/10/2015 13:39:07 door Thomas van den Heuvel