Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmiana wygenerowanego obrazka
Forum PHP.pl > Forum > Przedszkole
onelife
Cześć. Mam taki kod

Kod
           $Link = "http://testowastrona/gener.php?Nick=".$_GET['nick'];
       $Wyswietlsygne= '<img src="'.$Link.'">';
       $Kopiuj= '<textarea cols="50">'.$Link.'</textarea>';


I obrazek się wyświetla. Ale chciałbym dodać możliwość zmiany obrazka poprzez kliknięcie np. [1] , [2] że pokazują się następne wygenerowane obrazki w miejscu tego 1.
markonix
Określ bardziej istote problemu - co to są te kolejne obrazki, wersje tej samej grafiki.
Czy podmiana ma się odbywać przez przeładowania strony?
onelife

Tak są te same wersję tylko inne kolorystycznie,chciałbym by podmiana odbywała się bez przeładowania strony.
markonix
Najprościej za pomocą jQuery - poczytaj pod hasłem "jQuery change image".
Można ukryć inne wersje i robić hide/show lub podmieniać src.
onelife
W sumie to znalazłem coś takiego

Kod
    <script type="text/javascript">
    function klik(o, src1, src2) {
    var sources = o.src.split("/");
    var image = sources[sources.length-1];
    if(image == src1) {
    o.src = src2;
    } else {
    o.src = src1;
    }
    }
    </script>
</head>
<img src="1.gif" alt="" onclick="klik(this, '1.gif', '2.gif')" />

Tylko nie wiem jak bym mógł to podczepić pod mój kod php

Kod
     $Link = "http://testowastrona/gener.php?Nick=".$_GET['nick'];
       $Wyswietlsygne= '<img src="'.$Link.'">';
       $Kopiuj= '<textarea cols="50">'.$Link.'</textarea>';



markonix
No to kiepsko szukasz bo tym przykładem nie osiągniesz co trzeba tzn. linki do wersji tej samej grafiki.
Określ po pierwsze pod jakim adresem są te inne wersje grafiki.
onelife
Jest tak:


Kod
http://localhost/gener.php?Nick=mojnick&syg=nawzaobrazka.png
markonix
Rozumiem, że w żaden sposób nie zabezpieczasz przed podawaniem dowolnych nicków w linku oraz dowolnego pliku, niekoniecznie obrazka w zmiennej "syg"? To tak tylko na marginesie.

Podaje rozwiązanie z jQuery (bardziej przejrzyste).

1) Linki do wersji to dowolne elementy (button, span, link), nie ma znaczenia. Ważne aby miały np. atrybut data-image="TU WSTAWIASZ nazwę obrazka" (nazwa atrybutu dowolna).
2) Za pomocą zdarzenia Click na tym elemencie wychwytujesz zmianę. $(this).attr('data-image') pozwala na pobranie klikniętej wersji obrazka (1, 2, 3 itd.) do której przycisk odwołuje.
3) Tworzysz link czyli cały link + na końcu pobraną nazwę obrazka. Możesz w data-image też trzymać już pełną ścieżkę, nie ma to znaczenia.
4) Tak utworzony link wstawiasz do funkcji zmieniającej "src" obrazka czyli ścieżkę grafiki: $('.klasa_obrazka').attr('src', wygenerowany_url)
onelife
Okej, a co do zabezpieczenia dania dowolnego pliku badź nicku to jak mogę to poprawić? Tzn jeśli wpiszemy zły nick to jest "Niestety podałes niepoprawne dane!" jeśli jest zły obrazek to pojawiają się błedy typu Warning: imagecreatefrompng(s4234.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in
phpion
Sprawdzaj czy obrazek faktycznie istnieje (file_exists lub is_file) lub po prostu stwórz tablicę dozwolonych nazw i sprawdzaj czy przekazana w adresie znajduje się wśród nich (in_array).
markonix
Cytat(onelife @ 5.02.2014, 09:01:03 ) *
Okej, a co do zabezpieczenia dania dowolnego pliku badź nicku to jak mogę to poprawić? Tzn jeśli wpiszemy zły nick to jest "Niestety podałes niepoprawne dane!" jeśli jest zły obrazek to pojawiają się błedy typu Warning: imagecreatefrompng(s4234.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in

Tzn nick wydaje mi się, że to powinien być nick zalogowanego?
Jeżeli to jest generator dowolnych banerów to nie było tematu.
onelife
Dowolnych. smile.gif


Można zamknąć,dziękuje za pomoc.
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.