Jag har ett .php-dokument som egentligen nästan bara innehåller HTML och sen har jag ytterligare ett .php-dokument med kod som exekveras när användaren klickar på en knapp.
Som ni ser i det andra dokumentet så kör jag session_start() och i testsyfte så försöker jag köra en echo på session_id() vilket inte fungerar, och jag har heller inte tillgång till $_SESSION['username']/$_SESSION['id'] som t.ex. fungerar i det förstnämnda dokumentet.
Jag håller på att bygga en funktion där användare i en databas kan ladda upp profilbilder och då måste den uppladdade bilden visas enbart för den användaren, således behöver jag ha tillgång till antingen id eller användarnamn då dessa är kolumner i min databas som sedan kan länkas samman med ett id som genereras för varje uppladdad bild. Om id:t för en bild är "123" så kommer jag sedan ha en if-sats eller liknande som kommer vara något i stil med "om användaren har id 1 så ska bild "123" visas.
Hur kommer det sig att jag i detta dokument inte har tillgång till några session-variabler trots det att en session är startad? Kan det bero på att det andra .php-dokumentet finns i en annan mapp?
Kod:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Flimmer Forum</title>
<meta charset="UTF-8">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Open+Sans&family=Texturina&display=swap" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<header>
<h1>Flimmer <span>Forum</span></h1>
<nav>
<ul>
<?php
if(isset($_SESSION['username'])) {
echo '<li><a href="profile.php">Profile</a></li>';
echo '<li><a href="includes/logout.inc.php">Log Out</a></li>';
}
else {
echo '<li><a href="login.php">Log In</a></li>';
echo '<li><a href="register.php">Register</a></li>';
}
?>
</ul>
</nav>
</header>
<div class="profilecontainer">
<div class="profilename">
<?php
echo '<p>' . $_SESSION['username'] . '</p>';
?>
</div>
<div class="profilepicture">
<img src="img/flimmer/default_user.png" width="125" height="125" alt="profilepicture">
</div>
<div class="profilesettings">
<a href="uploadprofilepic.php">Upload profile picture</a>
</div>
<form action="includes/uploadprofilepic.inc.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" class="fileupload"><br>
<button type="submit" name="submit" class="fileuploadbutton">Upload</button>
</form>
</div>
</body>
</html>
Kod:
<?php
session_start();
echo session_id();
if(isset($_POST['submit'])) {
session_start();
echo session_id();
$file = $_FILES['file'];
$filename = $_FILES['file']['name'];
$filetype = $_FILES['file']['type'];
$filesize = $_FILES['file']['size'];
$temp_location = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
$fileExt = explode('.', $filename);
$actualFileExt = strtolower(end($fileExt));
$allowedFiles = array('jpg', 'jpeg', 'png');
if(in_array($actualFileExt, $allowedFiles)) {
if($error === 0) {
if($filesize < 500000) {
$newFileName = uniqid('', true) . '.' . $actualFileExt;
$fileDestination = '../img/profilepics/' . $newFileName;
move_uploaded_file($temp_location, $fileDestination);
header('Location: ../uploadprofilepic.php?success=upload_success');
exit();
}
}
else {
header('Location: ../uploadprofilepic.php?error=unknown_error');
exit();
}
}
else {
header('Location: ../uploadprofilepic.php?error=incorrect_file_format');
exit();
}
}
Som ni ser i det andra dokumentet så kör jag session_start() och i testsyfte så försöker jag köra en echo på session_id() vilket inte fungerar, och jag har heller inte tillgång till $_SESSION['username']/$_SESSION['id'] som t.ex. fungerar i det förstnämnda dokumentet.
Jag håller på att bygga en funktion där användare i en databas kan ladda upp profilbilder och då måste den uppladdade bilden visas enbart för den användaren, således behöver jag ha tillgång till antingen id eller användarnamn då dessa är kolumner i min databas som sedan kan länkas samman med ett id som genereras för varje uppladdad bild. Om id:t för en bild är "123" så kommer jag sedan ha en if-sats eller liknande som kommer vara något i stil med "om användaren har id 1 så ska bild "123" visas.
Hur kommer det sig att jag i detta dokument inte har tillgång till några session-variabler trots det att en session är startad? Kan det bero på att det andra .php-dokumentet finns i en annan mapp?