friko.pl - Przenoszenie pliku po wrzuceniu

Odpowiedz Nowy wątek
2011-08-28 18:49
0

Witam wszystkich
Mam problem i wyjasnie na przykladzie:
Napisalem jeden plik w html ktorego nazwa to "pisanie_posta.php", pod spodem znajduje sie jego kod.
Kod:

<?php
session_start();
if(!$_SESSION['prawo'])
{
echo "Nie masz prawa tu przebywac.<br/><a href=../index.php>Odejdz!</a>";
exit;
}
?>
<html>
<head>
<title>Pisanie posta...</title>
</head>
<body>
 
<form action="dodawanie_posta.php" method=post enctype="multipart/form-data">
Tytul:<br/>
<input type=text name=tytul><br/>
Obrazek:<br/>
<input type="file" name="obrazek"><br/>
Tresc:<br/>
<textarea cols=50 rows=10 name=tresc></textarea><br/>
<button type=submit>Wyslij</button>
</form>
<a href="administracja.php">Powrot...</a>
 
</body>
</html>

Nie ma w nic skomplikowanego to prawie sam HTML, tylko u gory widzimy kawalek PHP ktorego funkcja polega na tym czy uzytkownik ma prawo przebywac na tej stronie. Drugi plik jest juz troche bardziej skomplikowany a jego nazwa, jak pewnie wywnioskowaliscie po przeczytaniu kodu HTML brzmi "dodawanie_posta.php", jego kod znajduje sie pod spodem.
Kod:

<?php
session_start();
include('db_fns.php');
if(!$_SESSION['uprawnienia'])
{
echo "Nie masz prawa widziec tej strony<br/>";
exit;
}
$tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
$nazwa_obrazka = $_FILES['obrazek']['name'];
$podpis = "Jumper    ";
$data = date("d-m-Y H:i");
$podpis .= $data;
 
if(is_uploaded_file($_FILES['obrazek']['tmp_name']))
{
echo 'Odebrano plik. Poczatkowa nazwa: '.$_FILES['obrazek']['name'];
echo '<br/>';
if(isset($_FILES['obrazek']['type']))
{
echo 'Typ: '.$FILES['obrazek']['type'].'<br/>';
}
else
   echo 'Typ: nie odnalezino typu';
$przenoszenie = move_uploaded_file($_FILES['obrazek']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/strony/obrazki/'.$_FILES['obrazek']['name']);
if(!$przenoszenie)
   echo "Przenoszenie pliku nie powiodlo sie";
}
else
{
echo 'Blad przy przesylaniu danych';
}
 
//wszystko pod spodem dziala prawidlowo ale umieszczam gdyby ktos chcial poznac lub po prostu czegos mu brakowalo
$calosc = "<table bgcolor=e1e1e1 width=550 align=center>
<tr>
<td><h1><a name=$tytul>$tytul</a></h1><div id=postowa_linia></div></td>
</tr>
<tr>
<td><img src=strony/obrazki/$nazwa_obrazka width=150 height=113 alt=$nazwa_obrazka align=left>$tresc</td>
</tr>
<tr>
<td><div id=postowa_linia></div>$podpis</td>
</tr>
</table>";
$tytul2 = "<a href=#$tytul>$tytul</a>";
$polaczenie = polaczenie();
$zapytanie = "INSERT INTO `tytuly`(`tytul`) VALUES ('$tytul2')";
$wykonaj = mysql_query($zapytanie);
$zapytanie = "INSERT INTO `posty`(`post`) VALUES ('$calosc')";
$wykonaj = mysql_query($zapytanie);
if(!$wykonaj)
   echo 'Nie mozna bylo dodac posta<br/>';
else
{
echo 'Post zostal pomyslnie dodany<br/>';
header("Location: administracja.php");
}
?>

Zeby nie bylo na serwerze istnieje folder "strony" a w nim folder "obrazki". Na localhoscie wszystko dziala poprawnie.
Bardzo prosze o pomoc.

Pozdrawiam

PS. Uzywam darmowego hostingu friko.pl

Pozostało 580 znaków

2011-08-28 19:05
0

Hm...
Ostatnio pojawia się coraz więcej wątków, w których nie wiadomo o co chodzi :]
O co Tobie chodzi?
Plik się nie wysyła, czy co?


edytowany 1x, ostatnio: Patryk27, 2011-08-28 19:05

Pozostało 580 znaków

2011-08-28 19:08
0

Stawiam na niepoprawny chmod katalogu 'strony/obrazki'. Sprawdź te uprawnienia.


"(...) otherwise, the behavior is undefined".

Pozostało 580 znaków

2011-08-28 19:08
0

Ehhh bardzo przepraszam ale zamyslilem sie i zapomnialem, ze niekazdy mysli tym samym torem :-)
Chodzi o to, ze plik chyba nie chce sie przeslac na serwer bo nawet kiedy wylaczylem przenoszenie pliku do odpowiedniego katalogu - co moglo wywolywac jakies tam problemy ktore obecnie nie przychdoza mi do glowy to pliku i tak nie ma go na serwerze.

Ale napisz jaki jest rezultat; masz tam wiele echo, co się wyświetla i jak to wygląda? - Endrju 2011-08-28 19:11

Pozostało 580 znaków

2011-08-28 19:12
0

Jak już powiedział Endrju - sprawdź chmod.
Ma być 777


Pozostało 580 znaków

2011-08-28 19:43
0

Plik odbiera do serwera ale go nie przenosi na wlasciwe miejsce i nawet nie wiem co sie z nim dzieje bo nigdzie go na serwerze nie ma. Wiem ze odbiera poniewaz po wpisaniu

if(is_uploaded_file($_FILES['obrazek']['tmp_name']))
{
echo 'Odebrano plik. Poczatkowa nazwa: '.$_FILES['obrazek']['name'];
echo '<br/>';
}

PS. Uzywam programu gFTP na Fedorze. i zaznaczylem wszytskie pliki na serwerze i dalem Permissions: read, writce, execute. Czyli ustawilem chmod na 777.

Pozostało 580 znaków

2011-08-28 19:59
0

Spróbuj to zrobić tak:

move_uploaded_file($_FILES['obrazek']['tmp_name'],'strony/obrazki/'.$_FILES['obrazek']['name']);

IMO, Friko go może odrzucać, a skrypt pokazywać, że plik wysłany.
Najpierw polecałbym zakodować nazwę pliku MD5, a w bazie zapisać jego prawdziwą nazwę, np:
ID | FileName | RealFileName
0 | Hello.txt | 218102097736746201932521820685026777149
Na serwerze będzie istniał plik "218102097736746201932521820685026777149", a gdy będziesz się do niego chciał dostać po prawdziwej nazwie, to szukasz po bazie danych.
Nadążasz?
;)


Pozostało 580 znaków

2011-08-28 20:20
0

Hmmm... Sprobuje teraz na innym hostingu bo friko mnie dobija. Znowu przerwa techniczna i miejmy nadzieje ze nieptrwa tak jak ostatnia 24h.
A co tego zakodowania w md5 to co to do? Moze dla niektorych wydac sie to banalne pytanie ale...
I na przyklad gdyby potem chcial sie odwolac do tak zakodowanego pliku na serwerze to mam napisac np.

<img src="<?php echo md5('obrazek'); ?>"/>

????

edytowany 1x, ostatnio: BigMaster, 2011-08-28 20:40
To tak na przyszłość, ponieważ niektóre hostingi nie akceptują plików np.:exe, czy innych; Ale jeżeli zamierzasz wrzucać wyłącznie obrazki (lub pliki, które hosting akceptuje) to nie będzie problemów. Póki co nie porywaj się na to :) - Patryk27 2011-08-28 20:47
BTW, u mnie na Friko przerwa techniczna czasami trwa tydzień... - Patryk27 2011-08-28 20:48

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0