Skocz do zawartości

licznik pobrań pliku


pafeu

Rekomendowane odpowiedzi

witam

mam problem z licznikiem pobrań a mianowicie licznik po kliknięciu na plik wyskakuje błąd

Proszę pomóżcie ewentualnie podeślijcie linki do sprawdzonych liczników

z góry dziękuję :)

kod wygląda tak:

index.php

<?php
$baza = mysql_connect("localhost", "user", "pass");
if ($baza) {
$wynik = mysql_select_db("baza1",$baza);
if ($wynik) {
$sql="SELECT * FROM kliki ORDER BY licznik DESC";
$wynik = mysql_query($sql,$baza);
mysql_close($baza);
for ($i=0;$i<mysql_num_rows($wynik);$i++) {
list($bid, $bnazwa, $blicznik) = mysql_fetch_row($wynik);
echo "<br>- <a href=\"pobierz.php?id=$bid\">$bnazwa</a> [$blicznik]";
}
} else { echo "Wybranie bazy danych nie było możliwe..."; }
} else { echo "Połączenie do MySQL nie było możliwe..."; }
?>

pobierz.php

<?php
if ($id) {
$baza = mysql_connect("localhost", "user", "pass");
mysql_select_db("baza1",$baza);
mysql_query("UPDATE kliki SET licznik=licznik+1 WHERE id=$id", $baza);
$wynik = mysql_query("SELECT nazwa FROM kliki WHERE id=$id", $baza);
mysql_close($baza);
}
if ($wynik) {
$w = mysql_fetch_row($wynik);
$plik= $w[0];
if (($plik<>"")and(file_exists("pliki/$plik"))) { 
header("location: pliki/$plik"); exit; 
}
}
header("location: index.php"); exit;
?>

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 57
  • Dodano
  • Ostatniej odpowiedzi

Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\www\om4\licznik\pobierz.php:1) in C:\xampp\htdocs\www\om4\licznik\pobierz.php on line 16

Masz klasyczny błąd robiony przez początkujących polegający na wysyłaniu jakiś danych na out [wyjście] przed wywołaniem funkcji header.

Jeśli używasz funkcji header nawet spacji nie możesz wysłać przed użyciwm tej funkcji tak samo plik nie może mieć pustej linii:

Poniższy przykład jest źle patrząc od początku pliku w którym jest kod php

   
<?php
// dalej kod
?>

Dobrze:

<?php
// dalej kod
?>

chyba, że zastosujesz funkcje buforujące dane przed wysłaniem:

https://php.net/manual/en/function.ob-start.php

https://www.php.net/manual/en/function.ob-gzhandler.php

Po szczegóły odsyłam do manualu PHP

https://php.net/manual/en/function.header.php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

w kodzie nie mam pustych wierszy

czy możesz na przykładzie umieszczonego na początku kodu wskazać w którym miejscu jest błąd

bo ja sobie z tym nie poradzę

błąd wskazuje na linię 16 ale ja nic tam ciekawego nie widzę :)

header("location: index.php"); exit;

proszę o pomoc

z góry dziękuję

Odnośnik do komentarza
Udostępnij na innych stronach

bo ja sobie z tym nie poradzę

proszę o pomoc

z góry dziękuję

W takim razie kieruj się do działu zlecenia, bo napisałem w czym jest problem, a nawet jak go rozwiązać !

.... chyba, że zastosujesz funkcje buforujące dane przed wysłaniem:

https://php.net/manual/en/function.ob-start.php

https://www.php.net/manual/en/function.ob-gzhandler.php

Po szczegóły odsyłam do manualu PHP

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

twoja pomoc jest napewno bardzo cenna i trafna

ale moja wiedza na ten temat jest skromna

proszę Cię o wyrozumiałość i pomoc na konkretnym przykładzie

napewno pozwoli to poszerzyć moją wiedzę

funkcja buforowania wygląda bardzo ciekawie ale i tutaj znowu kłania się brak wiedzy

mimo, że przeczytałem temat buforowania nie bardzo wiem, jak to praktycznie wykorzystać

konkretnie co mam zamienić podczas buforowania na co

Funkcja callback ( $ buffer )
{
 zwrotu ( str_replace ( "coś" , "zamieniamy na coś innego" , $ buffer ));
}

podpowiedz jakie znaki bądź ciągi znaków wstawić w pola "coś" , "zamieniamy na coś innego"

Odnośnik do komentarza
Udostępnij na innych stronach

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

napewno to kiedyś opanuję ale na tą chwilę potrzebna jest mi konkretna odpowiedź w czym jest problem

bo nie jestem w stanie w ciągu kilku godzin zgłębić wiedzy, którą przyswaja się tygodniami

tak wię proszę aby mnie ktoś naprowadził na właściwą drogę

czy to jest buforowanie czy kodowanie czy coś innego?

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze to nie edytuj tych plików w notepad tylko znajdź sobie jakiś normalny edytor: gedit do linuxa lub notepad++ po okienka.

Po drugie dodaj na początku strony :

ob_start();

i na końcu

ob_end_flush();

Najtańsze przedłużenia domen: masternet.pl468x60.jpg

50 zł w zakładzie bez ryzka - betclic.pl

Darmowe gry flash

Odnośnik do komentarza
Udostępnij na innych stronach

wstawiłem tak ja piszesz - mam nadzieję, że w dobrym miejscu

ale niestety to nie pomogło

kod wygląda tak:

index.php

<?php
ob_start();
$baza = mysql_connect("localhost", "user", "pass");
if ($baza) {
$wynik = mysql_select_db("baza1",$baza);
if ($wynik) {
$sql="SELECT * FROM kliki ORDER BY licznik DESC";
$wynik = mysql_query($sql,$baza);
mysql_close($baza);
for ($i=0;$i<mysql_num_rows($wynik);$i++) {
list($bid, $bnazwa, $blicznik) = mysql_fetch_row($wynik);
echo "<br>- <a href=\"pobierz.php?id=$bid\">$bnazwa</a> [$blicznik]";
}
} else { echo "Wybranie bazy danych nie było możliwe..."; }
} else { echo "Połączenie do MySQL nie było możliwe..."; }
ob_end_flush();
?>

pobierz.php

<?php
ob_start();
if ($id) {
$baza = mysql_connect("localhost", "user", "pass");
mysql_select_db("baza1",$baza);
mysql_query("UPDATE kliki SET licznik=licznik+1 WHERE id=$id", $baza);
$wynik = mysql_query("SELECT nazwa FROM kliki WHERE id=$id", $baza);
mysql_close($baza);
}
if ($wynik) {
$w = mysql_fetch_row($wynik);
$plik= $w[0];
if (($plik<>"")and(file_exists("pliki/$plik"))) { 
header("location: pliki/$plik"); exit; 
}
}
header("location: index.php"); exit;
ob_end_flush();
?>

Odnośnik do komentarza
Udostępnij na innych stronach

to else coś pomogło ale nie do końca

po linku w przeglądarce widać, że przełącza na kliknięty plik ale go nie wywołuje do pobrania https://www.om4.pl/licznik/

masz jescze jakieś pomysły

<?php
ob_start();
if($id)
{
$baza=mysql_connect("localhost","user","pass");
mysql_select_db("baza1",$baza);
mysql_query("UPDATEklikiSETlicznik=licznik+1WHERE id=$id",$baza);
$wynik=mysql_query("SELECT nazwa FROM kliki WHERE id=$id",$baza);
mysql_close($baza);
}
if($wynik)
{
$w=mysql_fetch_row($wynik);
$plik=$w[0];
	if(($plik<>"")and(file_exists("pliki/$plik")))
	{
	header("location:pliki/$plik");exit;
	}
else 
{
header("location:index.php");exit;
}
}

ob_end_flush();
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Wstaw to i powiedz co gada program:)

<?php
ob_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

echo 'ID ma wartosc '. $id . '<br>';  //testowka
if($id)
{
$baza=mysql_connect("localhost","root","222222") or die('Nie moge polaczyc'. mysql_error());
mysql_select_db("baza1",$baza) or die('Nie moge znalezc bazy'. mysql_error());
mysql_query("UPDATE kliki SETlicznik=licznik+1 WHERE id=$id",$baza) or die('Blad w UPDATE'. mysql_error());
$wynik=mysql_query("SELECT nazwa FROM kliki WHERE id=$id",$baza) or die('Blad w SELECT'. mysql_error());
mysql_close($baza);
}
if($wynik)
{
$w=mysql_fetch_row($wynik);
$plik=$w[0];
echo 'Plik ma wartosc '. $plik . '<br>';  //testowka
	if(($plik<>"")and(file_exists("pliki/$plik")))
	{
	header("location:pliki/$plik");exit;
	}
else
{
header("location:index.php");exit;
}
}

ob_end_flush();
?>

Najtańsze przedłużenia domen: masternet.pl468x60.jpg

50 zł w zakładzie bez ryzka - betclic.pl

Darmowe gry flash

Odnośnik do komentarza
Udostępnij na innych stronach

Notice: Undefined variable: id in C:\xampp\htdocs\www\om4\licznik\pobierz.php on line 7

ID ma wartosc

Notice: Undefined variable: id in C:\xampp\htdocs\www\om4\licznik\pobierz.php on line 9

Notice: Undefined variable: wynik in C:\xampp\htdocs\www\om4\licznik\pobierz.php on line 17

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności