Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jeden użytkownik jeden plik
Forum PHP.pl > Forum > Gotowe rozwiązania
vojtek_
Jak zrobic zeby na uploadzie jeden zarejestrowany uzytkownik mial jeden plik (jeden obrazek biggrin.gif) np: users_obrazek.gif i jak wysle drugi
to ten pierwszy sie podmieni biggrin.gif
soldat
Witam ponownie,

Jak masz unikalne nazwy użytkowników (a tak być powinno), to wystarczy nazwać obrazki za pomocą tych loginów, względnie np. jeżeli masz w bazie użytkowników inny klucz niż login, za pomocą tegoż klucza.

Wtedy po uploadzie piszesz :

  1. <?php
  2.  
  3. if (file_exists($nazwa_pliku)) { unlink($nazwa_pliku); }
  4. copy($_FILES['nowy_plik']['tmp_name'],$nazwa_pliku);
  5.  
  6. ?>


nowy_plik to nazwa pola file w formularzu
vojtek_
Nie dziala mi sad.gif

Mam trzy strony:
1. account.html
2. account.php
3. ten upload (tam nie ma nic o zalogowaniu)
4. folder users (w nim sa pliki php z uzytkownikami i haslami itp.)

Pierwsza jest w html i odpowiada za wyglad strony
Druga w niej jestem zalogowany np.vojtek
Trzecia strona to jest mój upload.
I teraz zeby w tym uploadzie wykrylo jaki jest uzytkownik np: vojtek
I przy wysylaniu obrazka np: costam.gif zamienilo na vojtek_obraz.gif.
I jak drugi raz wysle to sie zamieni ten obrazek, a jak sie przeloguje na np: vovo
to obrazek zamieni na vovo_obraz.gif biggrin.gif
soldat
Metoda którą ci zaproponowałem jest skuteczna, tylko że musisz zrobić odrobinę więcej ponad wklejenie tych dwóch (przykladowych) linijek kodu.

Podaj jakiś link do kodu źródłowego, to w wolnej zobaczę co się da zrobić, jężeli sam nie dasz rady.
vojtek_
To jest forum txtBB.
Mozna go sciagnac z oficjalnej strony forum. A mój upload daje tu:

  1. <?php
  2.  
  3. $site_name = $_SERVER['HTTP_HOST'];
  4. $url_dir = &#092;"http://\".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  5. $url_this =  &#092;"http://\".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  6.  
  7. $upload_dir = &#092;"upload_files/\";
  8. $upload_url = $url_dir.&#092;"/upload_files/\";
  9. $message =&#092;"\";
  10.  
  11. if (!is_dir(&#092;"upload_files\")) {
  12.         die (&#092;"Nie ma folderu do przechowywania pliku.\");
  13. }
  14.  
  15. if ($_FILES['userfile']) {
  16.         $message = do_upload($upload_dir, $upload_url);
  17. }
  18. else {
  19.         $message = &#092;"Nie załadowano pliku.\";
  20. }
  21.  
  22. print $message;
  23.  
  24. function do_upload($upload_dir, $upload_url) {
  25.  
  26.         $temp_name = $_FILES['userfile']['tmp_name'];
  27.         $file_name = $_FILES['userfile']['name']; 
  28.         $file_type = $_FILES['userfile']['image/gif']; 
  29.         $file_size = $_FILES['userfile']['size']; 
  30.         $result    = $_FILES['userfile']['error'];
  31.         $file_url  = $upload_url.$file_name;
  32.         $file_path = $upload_dir.$file_name;
  33.         $im=getimagesize($temp_name);
  34. if (($im[2]!=1) && ($im[2]!=2))  {
  35.   $message=&#092;"Niewłaściwy typ pliku\";
  36.   return($message);
  37. }
  38.  
  39. else if ($file_name==&#092;"\")
  40.  
  41.         //File Name Check
  42.     if ( $file_name ==&#092;"txtbb2\") { 
  43.             $message = &#092;"Nie załadowano pliku\";
  44.             return $message;
  45.     }
  46.     //Wielkość pliku
  47.     else if ( $file_size > 500000) {
  48.         $message = &#092;"The file size is over 500K.\";
  49.         return $message;
  50.     }
  51.     //File Type Check
  52.     else if ( $file_type == &#092;"text/plain\" ) {
  53.         $message = &#092;"Niewłaściwy typ pliku\" ;
  54.         return $message;
  55.     }
  56.  
  57.     $result  =  move_uploaded_file($temp_name, $file_path);
  58.     $message = ($result)?&#092;"Adres pliku <a href=$file_url>$file_url</a>\" :
  59.                   &#092;"Ten adres nie istnieje..\";
  60.  
  61.     return $message;
  62. }
  63. ?>
  64.  
  65.  
  66. <form name=\"upload\" id=\"upload\" ENCTYPE=\"multipart/form-data\" method=\"post\">
  67.  <small>Wybierz obraz</small>  
  68.   <input type=\"file\" id=\"userfile\" name=\"userfile\">
  69.   <input type=\"submit\" name=\"Ładuj\" value=\"Ładuj\">
  70. </form>  

Ja jeszcze to includuje na inna strone snitch.gif
soldat
A w jakiej zmiennej jest przechowywana nazwa bieżącego uzytkownika ?
vojtek_
Znalazlem jeszcze plik login.php I to tam jest chyba ta zmienna:
  1. <?
  2.  
  3. if ($_GET['type'] == 'logout') {
  4. setcookie('forum-login', '');
  5. setcookie('forum-pass', ''); 
  6. }
  7.  
  8. // Domyslna skorka dla wszystkich uzytkownikow
  9. $_TEMPLATE = 'txtbb_blue';
  10.  
  11. //----------------------------------------------------
  12. // Informacje o logowaniu sa w cookie (autologin)
  13. //----------------------------------------------------
  14.  
  15. if (!isset($_SESSION['login'])) {
  16. if (isset($_COOKIE['forum-login']) && (!$_COOKIE['forum-login'] == '') && isset($_COOKIE['forum-pass']) && !($_GET['type'] == 'logout')) {
  17. $UserInfo = user_GetUserByLogin($_COOKIE['forum-login']);
  18. if (($UserInfo['login'] == $_COOKIE['forum-login']) && ($UserInfo['password'] == md5($_COOKIE['forum-pass']))) {
  19. $UserInfo['last_login_date'] = $UserInfo['last_login'];
  20. $UserInfo['last_login'] = time();
  21. user_Update($UserInfo);
  22. $_SESSION['login'] = $_COOKIE['forum-login'];
  23. $_SESSION['password'] = md5($_COOKIE['forum-pass']);
  24. }
  25. }
  26. }
  27.  
  28. unset($UserInfo);
  29.  
  30. //----------------------------------------------------
  31. // Sprawdz login i haslo zapisane w sesji
  32. //----------------------------------------------------
  33.  
  34. if (isset($_SESSION['login'])) {
  35. $UserInfo = user_GetUserByLogin($_SESSION['login']);
  36. if ($UserInfo['password'] !== $_SESSION['password']) {
  37. }
  38. }
  39.  
  40. unset($UserInfo);
  41.  
  42. //----------------------------------------------------
  43. // Informacje wyslane POSTem
  44. //----------------------------------------------------
  45.  
  46. if (isset($_POST['login']) && isset($_POST['pass'])) {
  47. $UserInfo = user_GetUserByLogin($_POST['login']);
  48. if ($UserInfo['login'] == $_POST['login'] && $UserInfo['password'] == md5($_POST['pass'])) {
  49. $_SESSION['login'] = $_POST['login'];
  50. $_SESSION['password'] = md5($_POST['pass']);
  51. $UserInfo['last_login_date'] = $UserInfo['last_login'];
  52. $UserInfo['last_login'] = time();
  53. user_Update($UserInfo);
  54. if ($_POST['auto'] == true) {
  55. setcookie('forum-login', $_POST['login'], time() + 3600 * 24 * 90);
  56. setcookie('forum-pass', $_POST['pass'], time() + 3600 * 24 * 90);
  57. }
  58. }
  59. }
  60.  
  61. unset($UserInfo);
  62.  
  63. //----------------------------------------------------
  64. // Komunikat LOGIN_INFO
  65. //----------------------------------------------------
  66.  
  67. if (isset($_SESSION['login'])) {
  68. $UserInfo = user_GetUserByLogin($_SESSION['login']);
  69. $_TEMPLATE = $UserInfo['template'];
  70. //Sprawdz, czy temat istnieje
  71. if (!is_dir('templates/' . $_TEMPLATE) || strlen($_TEMPLATE) < 1) {
  72. $_TEMPLATE = 'txtbb_blue';
  73. }
  74. if ($_SESSION['password'] == $UserInfo['password']) {
  75. if ($UserInfo['type'] > 2) {
  76. $loginInfo = GetMacro('LOGIN_INFO_LOGGED_ADMIN');
  77. } else {
  78. $loginInfo = GetMacro('LOGIN_INFO_LOGGED');
  79. }
  80. $loginInfo = str_replace('<!-- LOGIN -->', $_SESSION['login'], $loginInfo);
  81. $loginInfo = str_replace('<!-- MESSAGES -->', file_LinesCount('data/users/' . $_SESSION['login'] . '_msgs.php'), $loginInfo);
  82. } else {
  83. $loginInfo = GetMacro('LOGIN_INFO_UNLOGGED');
  84. }
  85. } else {
  86. $loginInfo = GetMacro('LOGIN_INFO_UNLOGGED');
  87. }
  88.  
  89. if (!is_dir('templates/' . $_TEMPLATE) || strlen($_TEMPLATE) < 1) {
  90. $_TEMPLATE = 'txtbb_blue';
  91. }
  92. ?>


Tylko nie wiem która sadsmiley02.gif
soldat
$_SESSION[login] jak sądzę
vojtek_
Tez tak myslalem, ale nie wiem jak wygladac ma KOD
To jak bedzie wygladal kod?
soldat
Dodaj na początku funkcji do_upload, ale po deklaracjach - np. w linii 33 (przed getimagesize) - deklarację :

  1. <?php
  2. $file_new_name=$upload_dir.$_SESSION[login].&#092;"_user.\".substr($file_name,-3,3);
  3. ?>


To jest nazwa pliku np. soldat_user.jpg smile.gif

Teraz w tej samej funkcji dodaj przed linijkę 57 :

  1. <?php
  2.  
  3.  if (file_exists($file_new_name)) { unlink($file_new_name); }
  4.  $result = move_uploaded_file($temp_name, $file_new_name);
  5.  
  6. ?>


Tak nawiasem mówiąc, musisz zadbać o to, żeby były właściwe nazwy użytkowników - w końcu mają służyć również jako nazwy plików. Same cyfry+literki i będzie OK.

Chyba teraz powinno działać - w każdym razie ten kawałek. Jakby co to na pewno rano będę trochę mądrzejszy, jak się porządnie wreszcie wyśpię smile.gif

Pozdr.
vojtek_
Niestety nie dziala
Nie ma zadnego bledu ale nazwa pliku nie jest zmieniona.
soldat
Bo nie nazwa pliku ma być zmieniona, tylko jego zawartość - na pewno nie działa ?

A poza tym nie możesz oczekiwać, że ktoś napisze za ciebie cały skrypt - pokombinuj trochę. snitch.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-2024 Invision Power Services, Inc.