Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sonda w PHP
Forum PHP.pl > Forum > Gotowe rozwiązania
jajo
Witam!
Chodzi o sonde z ksiazki Andrzeja Kierzkowskiego "Tworzenie stron www - php 4 - ćwiczenia praktyczne"
Oba pliki do dzialania sondy mozna znalezc pod adresesami:
http://flapjack.bimber.pl/php/6-12.php
http://flapjack.bimber.pl/php/6-12-2html.php

Po uruchomieniu pliku 6-12.php otwiera sie sonda, po zaglosowaniu (na obojetnie co) wyskakuja nastepujace bledy:

Warning: Cannot modify header information - headers already sent by (output started at /www/users/flapjack/www/php/6-12.php:5) in /www/users/flapjack/www/php/6-12-2html.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at /www/users/flapjack/www/php/6-12.php:5) in /www/users/flapjack/www/php/6-12-2html.php on line 76

Skontaktowalem sie z samym autorem tej sondy. Niestety nie troche pomogl, jednak gdy prosilem zeby wyjasnij prosciej, nic nie odpisuje.
Wiec zwracam sie tutaj z pomoca. W jednym z listow odpisal mi cos takiego:

"Niestety jak nie ma Pan możliwośći zmienić ustawienia wartości
zmiennej w php.ini, to rzeba albo przekonstruować skrypt, żeby
nagłówki szły po SetCookie, albo użyć funkcji output bufferingu:

przed nagłókiem:
ob_start();

na końcu:
ob_end_flush();"


W php.ini nic zmienic nie moge, bo to zalezy od admina serwera. O co chodzi z tymi naglowkami, prosze o pomoc w wyjasnieniu problemu, co musze zmienic w kodzie w pliku 6-12-2html.php?

Jezeli chcecie to moge na forum walnac kod html i php tych plikow.

[KaMeLeOn]: Wątek przesunięty z php...
dob
na samiutkim początku pliku przed jakimkolwiek tekstem wstaw :

[php:1:c29b9de523]<?php ob_start(); ?>[/php:1:c29b9de523]

a zupełnie na samym końcu pliku juz po całym kodzie wstaw:

[php:1:c29b9de523]<?php ob_end_flush(); ?>[/php:1:c29b9de523]
jajo
Kod wyglada teraz tak:

[php:1:e13a5bbf3c]
<?php ob_start(); ?>
<?
// Ankieta do zastosowania w serwisie WWW.
$glosowanie = array ('6' => 'rewelacyjna', '5' => 'bardzo dobra',
'4' => 'dobra', '3' => 'przeciętna',
'2' => 'zła', '1' => 'beznadziejna');

function glosowanie ($glosowanie, $quiz) {
// funkcja zapamiętuje wynik głosowania danej osoby
setcookie ('glosowano', "1"); // pamiętamy, że już głosowano
if (file_exists("dane/glosowanie.txt")) { // jest plik z głosowaniem
$plik = fopen ("dane/glosowanie.txt", "r+");
flock ($plik, 2);
$wiersz = fgets ($plik, 255);
$wyniki = split ("|", $wiersz);
fseek ($plik, 0);
} else { // nie ma pliku, więc go tworzymy
$plik = fopen ("dane/glosowanie.txt", "w+");
flock ($plik, 2);
}

for ($i=0; $i<count($glosowanie);$i++) { // aktualizacja wyników
if ($quiz == $i+1) { $wyniki[$i]++; }
fputs ($plik, $wyniki[$i]);
if ($i<count($glosowanie)-1) {fputs ($plik, '|'); }
}
flock ($plik, 3);
fclose ($plik);
}

function wyswietlanie ($glosowanie, $glosowano) {
// wy¶wietla: jeżeli osoba głosowała - wyniki, jeżeli nie - formularz
if ($glosowano) { // wy¶wietlamy wyniki
if (file_exists("dane/glosowanie.txt")) {
$plik = fopen ("dane/glosowanie.txt", "r");
$wiersz = fgets ($plik, 255);
fclose ($plik);
$wyniki = split ("|", $wiersz);
for ($i=0; $i<count($wyniki); $i++) { $liczbaglosow += $wyniki[$i]; }
}
print "<P ALIGN=CENTER><B>Ankieta</B></P>n";
print "<P>Oceń moj± stronę:</P><TABLE>n";
for (reset ($glosowanie); $klucz=key($glosowanie); next ($glosowanie)) {
print "<TR><TD>".pos($glosowanie).":&nbsp;</TD><TD>";
if ($liczbaglosow == 0) {
$procent = 0; // aby unikn±ć dzielenia przez zero!
} else {
$procent = ($wyniki[$klucz-1]/$liczbaglosow)*100;
}
print "<IMG SRC="img/1.gif" WIDTH=$procent HEIGHT="10"></TD>";
print "<TD ALIGN=RIGHT>&nbsp;";
printf ("%0.0f", $procent);
print ("%</TD></TR>");
}
print "</TABLE>";
} else { // wy¶wietlamy formularz
print '<FORM METHOD=GET ACTION="6-12.php">';
print "<P ALIGN=CENTER><B>Ankieta</B></P>n";
print "<P>Oceń moj± stronę:</P><TABLE>n";
for (reset ($glosowanie); $klucz=key($glosowanie); next ($glosowanie)) {
print ('<TR><TD><INPUT TYPE=radio NAME=quiz VALUE="'.$klucz. '"> '.
pos($glosowanie)."</TD></TR>n");
}

print '</TABLE><CENTER><INPUT TYPE=submit VALUE="Głosuj"></CENTER></P>';
print '</FORM>';
}
}

if ($quiz) { // oddano głos - aktualizacja danych i przekierowanie
glosowanie ($glosowanie, $quiz);

// "odkomentuj" jeden z poniższych nagłówków

// jeżeli używasz w HTML przez SSI lub w innym php przez require:

header ("Location: ".$GLOBALS["HTTP_REFERER"]);


// jeżeli chcesz używać samodzielnie:
// header ("Location: http://".$GLOBALS["SERVER_NAME"].
// $GLOBALS["REDIRECT_URL"]);

} else { // formularz lub wyniki
wyswietlanie ($glosowanie, $glosowano);
}
?>
<?php ob_end_flush(); ?>
[/php:1:e13a5bbf3c]

Ale skrypt dalej nie działa...
Ze zmnienionym kodem jest juz pod adresem:
http://flapjack.bimber.pl/php/6-12.php
moonman
Witam,
mam dokładnie ten sam problem...

niedzialajaca ankieta jest tutaj:
http://www.zsi.slupsk.pl/ankieta/6-12.shtml

a tutaj kod tejze strony:
http://www.zsi.slupsk.pl/ankieta/6-12.shtml.txt

oraz kody pozostalych plikow:
http://www.zsi.slupsk.pl/ankieta/6-12.php.txt
http://www.zsi.slupsk.pl/ankieta/6-12-2html.php.txt

wszystkie powyzsze rozwiazania zawiodly...
skrypt nie dziala z
Kod
ob_start();
oraz
Kod
ob_end_flush();


a o co dokladnie chodzi w:
Cytat
w wartości zmiennej w php.ini

co trzeba tam zmienic...

dodam tylko ze ten skrypcik dzialal mi gdy testwalem go na zainstalowanym php u mnie na kompie... (nie pamietam jak ten 'serwer' sie nazywal, taki prosty do testowania stron pod windows apache+php+mysql+phpmyadmin)

jesli ktos moglby sprawdzic dlaczego ten skrypt nie chce dzialac..
... cos tam z tymi cookies pewnie...
dob
W pliku w którym masz to require wstaw
[php:1:cc41c3d821]<?php
ob_start();
?>[/php:1:cc41c3d821]
na samym początku pliku a na samym końcu :
[php:1:cc41c3d821]<?php
ob_end_flush();
?>[/php:1:cc41c3d821]
moonman
Cytat
W pliku w którym masz to require wstaw  
[php:1:ee26a6155c]<?php
ob_start();
?>[/php:1:ee26a6155c]
na samym początku pliku a na samym końcu :
[php:1:ee26a6155c]<?php
ob_end_flush();
?>[/php:1:ee26a6155c]



DZIAŁA :!: :!: :!:

dzięki piękne... tongue.gif tongue.gif tongue.gif
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.