Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Avatary nie otwierają się
Forum PHP.pl > Forum > Bazy danych > MySQL
mikolodz
Witam,
skrypt umieszczający dane w bazie działa prawidłowo. Po dodaniu obrazka wszystkie dane dotyczące rozmiaru, typu, nazwy są poprawnie wyświetlane.

Tabela ma postać:
id varchar(30)
avatar blob
typ varchar(30)
rozmiar int.

System logowania i rejestracji w pełni działa.

Umieszczam je takim kodem:
Kod
<?
    baner();
    $id = uwierzytelnij(0);
    if(strcmp($id,"gosc")){
        
        $db = polaczZBaza();
        if($_FILES['userfile']['size'] > 0 && $_FILES['userfile']['size'] < 60000){
        
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];        
        
        $fp = fopen($tmpName, 'r');
        $content = fread($fp, filesize($tmpName));
        $content = addslashes($content);
        fclose($fp);
        
        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }
        
        $zapytanie = "insert into `avatars` (id, avatar, typ, rozmiar) values".
                    "('$id', '$content', '$fileType', '$fileSize')";
        $wynik = $db -> query($zapytanie);
        if($wynik){
            echo '<p class="style1">Avatar wysłany poprawnie</p>';    
            $db -> close();
        }else echo '<p class="style1">Błąd w wysyłaniu. Spróbuj ponownie.</p>';
    }
}
?>


Pliki wysyłane są z formularza:
Kod
<?
baner();
    $id = uwierzytelnij(1);
    if(strcmp($id,"gosc")){
        echo '
        
        <FORM ACTION="send.php" METHOD="POST" ENCTYPE="multipart/form-data">
        <div class="style1"><input type="hidden" name="MAX_FILE_SIZE" value="60000">
        Avatar: </td><td><INPUT type="file" name="userfile">
        <input type="submit" name="sumbit" value="zapisz"/>
        </FORM>';
        echo '<img src="mojserwer/showavatar.php?id='.$id.'" alt="avatar" width="150" height="150" />';

?>


wyświetlane MAJĄ być za pomocą:
Kod
<?
    $db = polaczZBaza();
    $id = $_GET['id'];
    $zapytanie = "select avatar, typ, rozmiar from `avatars` where id='$id'";
    $wynik = $db -> query($zapytanie);
    if(($wynik -> num_rows) != 0){
        $wiersz = $wynik -> fetch_assoc();
        $typ = $wiersz['typ'];
        $content = $wiersz['avatar'];
        header("Content-type: $typ");
        echo $content;  
    }
    $db -> close();
?>


Po użyciu tego cudnego kodu wyskakuje mi pusty kwadrat w miejscu avatara, ale bez ikonki uszkodzenia, tylko taka jakaś szara jest w lewym rogu.
w informacjach obrazka mam:
-prawidłowo wpisany adres do tego pliku np. http://mojserwer/showavatar.php?id=mysikun
-prawidłowy rozmiar np. 3,7KB
-prawidłowy typ image/JPEG
-BŁĘDNY ROZMIAR PLIKU 0x0(przeskalowano do 150x150)

Kiedy wchodzę w źródło strony i klikam na ten 'adres' obrazka uzyskuję informację:

Obrazek "view-source:http://mojserwer/showavatar.php?id=mysiokun" nie może zostać wyświetlony, ponieważ zawiera błędy.

Straciłem na to kilkanaście godzin. implementowałem to na kilka sposobów i za każdym razem to samo.. Obrazek uszkodzony. Testowałem na kilku plikach, na JPEG, zrobionym przeze mnie, sciagnietym z neta, na GIFie PNG nic nie działa.Bardoz proszę Was o pomoc, bo już mi się skończyły pomysły..
wookieb
1) Zakomentuj header i echo $content to będziesz widzieć błędy
2) Spróbuj użyć funkcji z rodziny image* ( np imagejpeg )
mikolodz
Cytat(wookieb @ 25.09.2010, 22:26:26 ) *
1) Zakomentuj header i echo $content to będziesz widzieć błędy
2) Spróbuj użyć funkcji z rodziny image* ( np imagejpeg )


Pierwsza metoda, jesli dobrze ją zrozumiałem nie zadziałala, bo jedyne co się stało, to źródło jest puste i plik wyświetlający nic nie pokazuje.
Jutro spróbuję coś pokombinować z tym imagejpeg, aczkolwiek nie za bardzo rozumiem jak mógłbym tego użyć, żeby przerobić istniejący plik jpg na jpg.

Zastanawiam się, czy ostatecznie nie skorzystam z polecanego przez wszystkich rozwiązania jakim jest umieszczenie samych linków do avatarów w bazie..
dziękuję za pomoc i jakby ktoś znalazł błąd w moim kodzie to proszę o sugestie!! smile.gif
wookieb
Cytat(mikolodz @ 26.09.2010, 00:57:56 ) *
Zastanawiam się, czy ostatecznie nie skorzystam z polecanego przez wszystkich rozwiązania jakim jest umieszczenie samych linków do avatarów w bazie..
dziękuję za pomoc i jakby ktoś znalazł błąd w moim kodzie to proszę o sugestie!! smile.gif

No bo to jest najlepsze rozwiązanie.
mikolodz
Słuchajcie, zrobiłem tak jak mówicie.
Poprzez imagefrom... avatarki wrzucają się do uploadu, a linki do nich mam w mysqlu.
Obrazki zmieniaja swoj rozmiar, docinają sie i same w sobie są dobrze zapisane na serwerze.
Jednak nadal mam ten sam problem!
Słuchajcie. Zrobiłem plik showavatar.php.
poprzez geta dostaje on login usera, do którego ma zwrócić avatar.
Chcę zastosować taką metodę, aby osoba oglądająca profil nie wiedziała gdzie są obrazki przechowywane.
Oczywiście jak podaję mu, echo "<img src="upload/'.$nazwa.'"/>' to wyświetla obrazek, natomiast problem pojawia się wtedy gry jako ścieżkę podaję adres showavatar.php?id=mysiokiszka.

Oto zawartosc pliku showavatar:
Kod
<?
    //tu oczywiscie mam podane jeszcze includy
    $db = polaczZBaza();
    $id = $_GET['id'];
    $zapytanie = "select avatar from `avatars` where id='$id'";
    $wynik = $db -> query($zapytanie);
    if(($wynik -> num_rows) != 0){
        $wiersz = $wynik -> fetch_assoc();
        $nazwa = $wiersz['avatar'];
          
           $img = imagecreatefromjpeg('upload/'.$nazwa);
           header("Content-type: image/jpeg");
           echo $img;

    }    
    $db -> close();
?>


póżniej chcę obrazik wyświetlić w pliku wyswietlavatar.php:
Kod
echo '<img src="showavatar.php?id='.$id.'" alt="avatar" width="150" height="150" />';


W źródle jest wszystko poprawnie, ściezka podstawia się prawidłowa.
jak chcę wykonać plik showavatar.php to dostaję komunikat taki jak poprzednio:
Cytat
Obrazek "view-source:http://mojserwer/showavatar.php?id=mysiokiszka" nie może zostać wyświetlony, ponieważ zawiera błędy.


Zaznaczam jeszcze raz - ten plik istnieje na serwerze, jest poprawnie zapisany i mogę go pobrać na dysk i otworzyć. Wszystko w nim śmiga!

pozdrawiam! i bardzo proszę o pomoc, bo nie chciałbym podawać linków bezwzględnych z nazwą pliku itp... ;/:(
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.