Cześć,
Mam bardzo denerwujący problem, mianowicie mam skrypt w którym użytkownicy mogą edytować swoje logo. Przy niektórych użytkownikach działa bez problemu, a przy niektórych nie wyświetla mi grafiki. Co ciekawe, grafika na serwerze jest zapisywana prawidłowo, jeżeli wchodzę przez total commander to normalnie otwiera grafikę. W bazie mysql sprawdziłem i ścieżka też jest poprawnie zapisana. Jednak wpisując tą ścieżkę w przeglądarkę wywala mi bład 404 mimo że inny użytkownik wgrywając tą samą grafikę nie ma problemu :/ Na problem natrafiłem u dwóch użytkowników, nic nie daje ich usunięcie i ponowne wpisanie.
Zdjęcie wgrywam tak (jest tu jeszcze funkcja zmniejszająca rozmiar zdjęcia):
<?php
session_start();
if (!isset($_SESSION['zalogowany']))
{
header('Location: index.php');
exit();
}
$login=$_SESSION['login'];
require_once "connect.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if (mysqli_connect_errno() != 0)
{
echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
}
else
{
$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwad = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];
$plik_nazwa = strtolower($plik_nazwad);
function resize_image($file, $w, $h, $crop=FALSE)
{
list($width, $height) = getimagesize($file);
$r = $width / $height;
if ($crop)
{
if ($width > $height)
{
$width = ceil($width-($width*abs($r-$w/$h)));
}
else
{
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
}
else
{
if ($w/$h > $r)
{
$newwidth = $h*$r;
$newheight = $h;
}
else
{
$newheight = $w/$r;
$newwidth = $w;
}
}
$src = imagecreatefromjpeg($file);
$dst = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
return $dst;
}
if(is_uploaded_file($plik_tmp)) {
move_uploaded_file($plik_tmp, "uploads/max/$login-$plik_nazwa");
$img = resize_image("uploads/max/$login-$plik_nazwa", 360, 225);
imagejpeg($img, "uploads/$login-$plik_nazwa");
unlink("uploads/max/$login-$plik_nazwa");
$polaczenie->query("UPDATE user SET logo='http://domena.pl/wizytowka/uploads/$login-$plik_nazwa' WHERE login='$login'");
$_SESSION['logo'] = "http://domena.pl/wizytowka/uploads/$login.$plik_nazwa";
echo "Plik: <strong>$plik_nazwa</strong> zostal przeslany na serwer!<br />";
}
$polaczenie -> close();
echo '<meta http-equiv="refresh" content="1; URL=menu.php">';
}
?>
Załączam logi z wyświetlenia grafiki:
[30/Nov/2016:14:47:10 +0100] "GET /wizytowka/uploads/sasasa-t.jpg HTTP/1.1" 404 618 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MAAU; rv:11.0) like Gecko"
[30/Nov/2016:14:47:15 +0100] "GET /wizytowka/uploads/peengie-t.jpg HTTP/1.1" 200 17811 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MAAU; rv:11.0) like Gecko"
Jak widać w ścieżce zmieniła się tylko nazwa użytkownika. Próbowałem różne przeglądarki, komputery i wszędzie ten sam problem :( Czy wina może leżeć po stronie serwera?
Jeżeli nie ta kategoria to przepraszam, ale nie wiedziałem czy dać to do php czy do mysql czy jeszcze w jakąś inną.