ďťż

[PHP]Skypt downloadu. Na skypt zmiany strony

       

Podstrony


telcocafe

Dzień dobry. Mam problem. W numerze 5/05 w przydatnych kodach był artykuł o systemie downloadu.
<?php function pobierzDane($id) { $dane = file('download.txt'); foreach($dane as $linijka) { $pozycja=explode('|', $linijka); if ($pozycja[0]==$id) return trim($pozycja[1]); } } if (isset($_GET['id'])) $id=$_GET['id']; else $id=''; $nazwaPelna = pobierzDane($id); $nazwaPliku = substr($nazwaPelna, strrpos($nazwaPelna, '/') + 1, strlen($nazwaPelna)); if (file_exists($nazwaPelna)) { $plik = fopen($nazwaPelna,'r'); $rozmiar = filesize($nazwaPelna); $zawartosc = fread($plik, $rozmiar); fclose($plik); header("Content-Type: application/octet-stream"); header("Content-Length: $rozmiar;"); header("Content-Disposition: attachment; filename=$nazwaPliku"); echo $zawartosc; } else { echo 'nie ma pliku'; }
Nie chciałem, aby ściągał mi plik to go przekształciłem(nie umiem php, tylko kombinowałem).
<?php function pobierzDane($id) { $dane = file('users.txt'); foreach($dane as $linijka) { $pozycja=explode('|', $linijka); if ($pozycja[0]==$id) return trim($pozycja[1]); } } if (isset($_GET['id'])) $id=$_GET['id']; else $id=''; $nazwaPelna = pobierzDane($id); $nazwaPliku = substr($nazwaPelna, strrpos($nazwaPelna, '/') + 1, strlen($nazwaPelna)); if (file_exists($nazwaPelna)) { $plik = fopen($nazwaPelna,'r'); $rozmiar = filesize($nazwaPelna); $zawartosc = fread($plik, $rozmiar); fclose($plik); echo $zawartosc; } else { echo 'nie ma pliku'; }
W pliku users.txt mam ścieżki skryptów, które chciałm zamieśćić, a dokładnie plik logowania(ten prostrzy :) ) (według sposobu eksperta). Jak kliknę na stronkę http://hubert.h1.pl/prog/user.php?id=1 to zmiast logowania http://hubert.h1.pl/prog/2.php tylko jkieś krzaki. Gdzie jest błąd ?



U mnie takie krzaki były gdy zapomniałem uruchomić interpretera PHP, a jak uruchomiłem to znikły i było poprawnie.

Weim, ale nie wiem jak uruchomić tego interpretera PHP bo się na PHP nie znam :( . Norrmalnie jest włączony.
Użytkownik Petermechanic edytował ten post 01 luty 2006, 13:10
A skrypt jest pod rozszerzeniem .PHP? Może trzeba mieć na serwerze .PHTML
Użytkownik Capitan V edytował ten post 01 luty 2006, 13:12


tak. Te pliki mają rozszerzenie .php . Wszystko chodzi pooprawnie nawet forum na tym koncie ;) oprócz tego sryptu :(
Użytkownik Petermechanic edytował ten post 01 luty 2006, 13:12
No to sbróbuj zrobić bez ?id=1.
Użytkownik Capitan V edytował ten post 01 luty 2006, 13:13
http://hubert.h1.pl/prog/2.php chodzi poprawnie, hasło: test, login : test, ale coś z tym plikiem user.php jest nie tak :/
Użytkownik Petermechanic edytował ten post 01 luty 2006, 13:15
A wpisałeś początek sesji? Jak tak no to nie wiem co jest.

SESJA powinna być w każdym pliku twojej strony.
No to nie wiem o to jest :huh:
Użytkownik Capitan V edytował ten post 01 luty 2006, 13:23
Kod pliku 2.php (tego testowego)?
<?php session_start(); session_register("jest_adminem"); $plik_skryptu = "2.php"; function naglowek($tytul){ echo "<html>"; echo "<head>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />"; echo "<meta http-equiv=\"content-language\" content=\"pl\">"; echo "<title>{$tytul}</title>"; echo "<body>"; } function pokaz_okno_log($komunikat) { global $plik_skryptu; echo "<p>{$komunikat}</p>"; echo "<form name=\"logowanie\" action=\"{$plik_skryptu}\" method=\"post\">"; echo "Login: <input type=\"text\" name=\"login\"><br>"; echo "Hasło: <input type=\"password\" name=\"haslo\"><br>"; echo "<input type=\"hidden\" name=\"strona\" value=\"sprawdz\">"; echo "<input type=\"submit\" value=\"Zaloguj\"></form>"; } function stopka(){ echo "</body>"; echo "</html>"; } if(empty($_SESSION['jest_adminem'])) { $_SESSION['jest_adminem'] = "nie"; } if($HTTP_POST_VARS["strona"] == "") { $strona = $HTTP_GET_VARS["strona"]; } else { $strona = $HTTP_POST_VARS["strona"]; } if($strona == "") { if($_SESSION['jest_adminem'] == "tak") { ?> Test Stronki. <a href=<?=$plik_skryptu?>?strona=wyloguj>Wyloguj</a>. <br> <? } else { naglowek("Uzytkownik nie jest zalogowany!"); pokaz_okno_log("Aby ogl±dać tę stronę musisz być zalogowany!"); stopka(); } } elseif($strona == "sprawdz") { if($HTTP_POST_VARS["login"] == "test" && $HTTP_POST_VARS["haslo"] == "test") { $_SESSION['jest_adminem'] = "tak"; naglowek("Login i hasło poprawne!"); echo "<p>Zalogowanie zakończone sukcesem.<br>"; echo "Można już otworzyć <a href=\"{$plik_skryptu}\">tajn± podstronę</a></p>"; stopka(); } else { $_SESSION['jest_adminem'] = "nie"; naglowek("Bł±d logowania"); pokaz_okno_log("Zalogowanie się nie powiodło. Spróbuj jeszcze raz."); stopka(); } } elseif($strona == "wyloguj") { $_SESSION['jest_adminem'] = "nie"; naglowek("Wylogowanie"); echo "<p>Nast±piło wylogowanie. <a href=\"{$plik_skryptu}\">PrzejdÄ˝ na stronę główn±</a></p>"; stopka(); } ?>
Użytkownik Petermechanic edytował ten post 01 luty 2006, 13:21
Ok po 10 min patrzenia w kod i myślenia co chciałeś osiągnąc popatrzyłem na users.txt. Hehe... skrypt działa bez zarzutu, tak jak powinienen. Wczytuje zawartość pliku 2.php i to działa ładnie. :P

A tak serio to:
<?php function pobierzDane($id) { $dane = file('users.txt'); foreach($dane as $linijka) { $pozycja=explode('|', $linijka); if ($pozycja[0]==$id) return trim($pozycja[1]); } } if (isset($_GET['id'])) $id=$_GET['id']; else $id=''; $nazwaPelna = pobierzDane($id); $nazwaPliku = substr($nazwaPelna, strrpos($nazwaPelna, '/') + 1, strlen($nazwaPelna)); if (file_exists($nazwaPelna)) { include($nazwaPelna); } else { echo 'nie ma pliku'; }

Choć tak szczerze pomysł by wczytywać strone z pliku konfiguracyjnego nie należy do najlepszych.

Weim ,le mi właśnie o to chodziło i nie wiem ,dlaczego pokazuje mi takie krzaki :( Proszę o pomoc.
Użytkownik Petermechanic edytował ten post 01 luty 2006, 14:56
Witam, mam problem z tym samym systemem dowloadu. W skrypcie chyba nie ma błędu:
<?php function pobierzDane($id){  $dane = file('filess.txt');    foreach($dane as $linijka) {   $pozycja=explode('|', $linijka);   if ($pozycja[0]==$id)     return trim($pozycja[1]);  } } if (isset($_GET['id'])) $id=$_GET['id']; else $id=''; $nazwaPelna = pobierzDane($id); $nazwaPliku = substr($nazwaPelna,     strrpos($nazwaPelna, '/')+1,     strlen($nazwaPelna)); if (file_exists($nazwaPelna)) { $plik = fopen($nazwaPelna, 'r'); $rozmiar = filesize($nazwaPelna); $zawartosc = fread($plik, $rozmiar); fclose($plik); header("Content-Type: application/octet-stream"); header("Content-Length: $rozmiar;"); header("Content-Disposition: attachment; filename=$nazwaPliku"); echo $zawartosc; } else{  echo 'nie ma pliku'; } ?>
A problem jest tego typu, że kiedy chce ściągnąc jakis plik na próbe to ściąga tylko małą jego częśc. Np z pliku o rozmiarze 27 mb sciagnal około 3,5 kb. Dlaczego?? Prosze o pomoc
Użytkownik tonyyy20 edytował ten post 05 luty 2006, 16:15
To jest duży kod używaj [ codebox],[ /codebox]. To jest skrypt z eksperta? Ten właśnie skrypt mi poprawnie dizałał(z eksperta, chyba).
Użytkownik Petermechanic edytował ten post 05 luty 2006, 13:23

To jest duży kod używaj [ codebox],[ /codebox]. To jest skrypt z eksperta? Ten właśnie skrypt mi poprawnie dizałał(z eksperta, chyba).

To nie wiem, dalczego nie działa bo mu mnie jest wszystko w porządku (chyba)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.