masterofpain [ Pretorianin ]
potrzebna pomoc z PHP
mam nastepujacy kod w pliku php:
<HTML>
<HEAD>
<TITLE>CAPTCHA obrazkowe</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</HEAD>
<BODY>
<H1>CAPTCHA obrazkowe</H1>
<?php
tutaj kod generujacy obrazki z wykorzystanie biblioteki gd
?>
<form action="process.php" method="post">
<p>Ktore ze zwierzat to <?php echo "$przedzial[2]" ?>"? </p>
<p><input type="checkbox" name="type[]" value="<?php echo "$byly[0]" ?>"> 1
<input type="checkbox" name="type[]" value="<?php echo "$byly[1]" ?>"> 2
<input type="checkbox" name="type[]" value="<?php echo "$byly[2]" ?>"> 3
<input type="checkbox" name="type[]" value="<?php echo "$byly[3]" ?>"> 4</p>
<input type="submit">
</form>
</BODY>
</HTML>
chce, aby kod generowal obrazek, a potem zadaniem uzytkownika strony ma byc odpowiedz na pytanie(wybrac wszystkie obrazki bedace odpowiedzia na pytanie)
i tu pojawia sie problem, gdy mam sam czysty kod(generujacy obrazek) w php obrazek jest generowany tak jak powinien, niestety po dodaniu kodu odpowiadajacego za form'a nie widac ani obrazka(pojawia sie tylko sciezka do pliku php w ktorym jest kod) ani form'a. Czy ktos moze mi napisac co robie zle? Z gory dzieki za odpowiedz.
masterofpain [ Pretorianin ]
nikt nie pomoze?
tadek[5] [ 5 ]
wklej kod generujacy obrazek, moze wtedy da sie cos podpowiedziec
masterofpain [ Pretorianin ]
<?php
header("Content-type: image/jpeg");
$db_host = 'localhost';
$db_user = 'user;
$db_pwd = 'haslo';
$database = 'baza';
$table = 'galeria';
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Nie moge polaczyc sie z baza");
if (!mysql_select_db($database))
die("Nie moge wybrac bazy");
$zapytanie=mysql_query("SELECT * FROM galeria WHERE id=1") ;
$dane=mysql_fetch_array($zapytanie);
$img1=imagecreatefromjpeg("$dane[zdjecie]");
$zapytanie=mysql_query("SELECT * FROM galeria WHERE id=2") ;
$dane=mysql_fetch_array($zapytanie);
$img2=imagecreatefromjpeg("$dane[zdjecie]");
$zapytanie=mysql_query("SELECT * FROM galeria WHERE id=3") ;
$dane=mysql_fetch_array($zapytanie);
$img3=imagecreatefromjpeg("$dane[zdjecie]");
$zapytanie=mysql_query("SELECT * FROM galeria WHERE id=4") ;
$dane=mysql_fetch_array($zapytanie);
$img4=imagecreatefromjpeg("$dane[zdjecie]");
$imgx=imagesx($img1);
$imgy=imagesy($img1);
$imgN=imagecreatetruecolor($imgx*3,$imgy*2 +50);
imagecopy($imgN,$img1,0,0,0,0,$imgx,$imgy);
imagecopy($imgN,$img2,$imgx*1+20,0,0,0,$imgx,$imgy);
imagecopy($imgN,$img3,0,$imgy+20,0,0,$imgx,$imgy);
imagecopy($imgN,$img4,$imgx*1+20,$imgy+20,0,0,$imgx,$imgy);
imagejpeg($imgN);
?>
tadek[5] [ 5 ]
kod wyglada poprawnie, raczej bez sprawdzenia tego na "zywym organizmie" ciezko bedzie ci pomoc.
tym bardziej, ze odwoluje sie do bazy danych i nie wiadomo co i w jakim stanie z niej wyciaga.
Daro2k [ Pretorianin ]
Nie mozesz wstawic naglowka, jesli wczesniej wyslales juz tekst do uzytkownika.
Rozwiazanie: kod tworzacy obrazek wstaw do nowego pliku.
masterofpain [ Pretorianin ]
Daro2k a jakbys to zrobil?
tak:
<?php
require('generuj.php');
?>
bo takie cos daje mi identyczny wynik...
SPMKSJ [ Konsul ]
ponieważ naglowek html i tak juz jest utworzony, to byla zla rada.
to sie robi w ten sposob, ze w kodzie html dajesz znacznik obrazka
<img src="/sciezka/do/pliku/php/generujacego/obrazek" alt="" />
i wtedy bedzie dzialac
a w pliku generujacym obrazek nie uzywaj zadnych instrukcji echo i nie dodaj przez przypadek pustych linii poza znacznikami <? ?>
pozdrawiam
masterofpain [ Pretorianin ]
SPMKSJ WIELKIE dzieki, dziala:)
jeszcze 2 pytanka:
1. poniewaz obrazki sa losowane z pewnego zbioru zapisanego w bazie to musze wiedziec, ktore zostaly wylosowane, zeby moc zweryfikowac wybor uzytkownika, teraz pytanie jak przy pomocy Twojego sposobu wyslac tablice zawierajaca nr wylosowanych obrazkow?
2. W form'ie przetwarzany jest wybor uzytkownika i otwarta jest strona informujaca uzytkownika czy dobrze wybral...jak zrobic zeby po wcisnieciu przez uzytkownika przysciku wstacz w wyszukiwarce generowany byl nowy obrazek i wszystkie pola w form'ie byly czyste(obecnie jest to tak jak po wyborze przez uzytkownika przed wcisnieciem submit)?
masterofpain [ Pretorianin ]
ostatni up
SPMKSJ [ Konsul ]
ad1. to proste, możesz w tej ścieżce normalnie przesyłać zmienne metodą $_GET
,czyli
/sciezka/do/pliku/php/generujacego/obrazek?zmienna=1&zmienna2=2
ad 2. Jedyny pomysł jaki przychodzi mi do głowy, to stworzenie zmiennej sesyjnej logicznej. Niech zmienna ta na początku ma wartość 0, wtedy formularz będzie domyślny na stronie. Jeżeli ktoś wciśnie przycisk submit, uruchomi się twój następny skrypt. w tym skrypcie zmień wartość zmiennej sesyjnej logicznej na 1.
W tym momencie jeżeli użytkownik kliknie wstecz, twój stary skrypt z formularzem będzie poinformowany, że wcześniej był już wysyłany formularz, bo twoja zmienna logiczna sesyjna będzie miała wartość 1.
Teraz oprogramujesz sobie wyświetlanie formularza jak chcesz.
pozdrawiam
P.S.
Następnym razem wpisz się do wątku o php i webmasterce
https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=7016083&N=1
szybciej uzyskasz odpowiedź często lepszą od mojej, to odpowiednie miejsce dla takich problemów