Strona 1 z 1

Dodaj Komentarz i Wyślij plik

PostNapisane: So cze 18, 11 16:45
przez CrazyDevil
Witam ;)
Php w ogóle nie znam i dlatego też proszę o pomoc jak napisać "Komentator" oraz coś w rodzaju "Wyślij plik".
Chodzi mi o to, że chcę aby odwiedzający moją stronę mogli komentować wpisy itp..
Oraz aby mogli wysyłać do mnie pliki.

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: So cze 18, 11 18:17
przez dpkradom
1. Najprostszą formą komentarzy może być plik o nazwie takiej jak strona na której masz wpisy z rozszerzeniem np. txt. Trzeba zainteresować się zapisem do pliku i odczytem z pliku. Jeżeli poradzisz sobie z obsługą bazy danych polecam taką obsługę. Jenak na początek mogą to być pliki. Nie wiem czy znasz htmla i formularze, dlatego napiszę Ci że informacje z formularza trzeba przesyłać metodą POST do pliku php, gdzie plik php będzie dopisywał komentarz w danym pliku.

2. Sory, że tak napiszę ale to święta prawda, którą zna każdy webmaster. Nigdy nie ufaj użytkownikom. Będziesz miał 100 użytkowników, którzy z uploadu plików będą korzystali uczciwie, ale znajdzie Ci się jeden który będzie kombinował. Trzeba by zrobić do takiego uploadu jakieś zastrzeżenia (np. na rozszerzenia). Czyli np. robimy upload tylko i wyłącznie obrazków (co też do końca nie jest bezpieczne...). Wpisz w google "upload pliku w php" i masz sporo gotowych skryptów na stronę. Tu dodatkowo obrazek będzie wysyłany dzięki metodzie POST ale trzeba dodać ENCTYPE = "multipart/form-data".

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: So cze 18, 11 22:23
przez CrazyDevil
Witam ;)
Dziękuję za zainteresowanie się moim problemem ;)

"UPLOADOWANIE"
A więc zrobiłem coś takiego (a właściwie tylko wkleiłem):

PLIK: "form.php":
<html>
</body>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" /> /* maksymalna wielkość pliku w bajtach */
Plik do wysłania: <input name="userfile" type="file" />
<input type="submit" value="Wyślij" />
</form>
</body>
</html>


oraz PLIK "upload.php""
<?php

$location = 'Co tutaj mam wpisać?' . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $location)) {
echo "Plik został załadowany poprawnie...";
} else {
echo "Plik nie został załadowany...";
}

?>


i dalej nic nie działa.
W miejscu "Co tutaj mam wpisać" próbowałem z różnymi ścieżkami - bezskutecznie.
Czy ten plik: "upload.php" jest dobry? Mnie się wydaje, że coś jeszcze tam powinno być, no ale ja nie jestem specem od PHP, dlatego też się pytam ;)
Oczywiście przypisałem chmode 777 obu plikom.
Bardzo proszę o pomoc co robię źle, dziękuję ;)

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: N cze 19, 11 07:30
przez dpkradom
Tam masz wpisać folder do którego ma ładować plik. Pamiętaj, że na ugu masz ograniczenie na wielkość pliku (nie znam jeszcze maksymalnej wielkości pliku, ponieważ jeszcze nie było mi to potrzebne). W formularzu też masz ograniczenie 500000 bajtów. Folder ten powinien być już utworzony kiedy uploadujemy plik i powinien mieć odpowiednie prawa odczytu i zapisu.
Podsumowując - w miejsce o które się pytasz wstaw folder lub folder/ bo nie sprawdzałem jak powinno być i tworzymy katalog o nazwie folder. ;)

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: N cze 19, 11 10:44
przez CrazyDevil
Okey, już to mam, dziękuję bardzo ;))
Teraz zabieram się za komentator :)

EDIT:

KOMENTATOR:
stworzyłem plik "dodaj.php":
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<script type="text/javascript">
var inp="";
function getId(iid){
inp=iid.id;
}
function ins(txt){
if(inp!=""){
document.getElementById(inp).value+=txt;
}
}
</script>
<form name="form" method="POST" action="wyslij.php" onsubmit="return checkform(this);">

<title></title><table width="470" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" class="g3ownystyl">
<tbody><tr background="bar.jpg">
<td height="20" background="bar.jp" colspan="2"><div align="center"><b><font color="white">Dodaj Komentarz</font></b></div></td>
</tr>
<tr>
<td bgcolor="#84BEFF" width="104" height="21">Nick*:</td>
<td bgcolor="#84BEFF" width="300"><input name="nick" type="text" onkeyup="licz(this,32)" size="20">
<span class="styl1">(max 32 znaki) </span></td>
</tr>



<tr>
<td bgcolor="#84BEFF" height="28">Tre?sć:<br>
<span class="styl1">(max 200 znakow)</span> </td>
<td bgcolor="#84BEFF">
Znaków: <input type="text" id="licznik" value="0" style="width: 40px; background-color: white; border: 0px" disabled="">
<textarea name="tresc" cols="30" rows="6" id="inp1" onkeyup="licz(this,200)" onfocus="getId(this)" class="add" spellcheck="true"></textarea></td>

</tr>
<tr>
<td bgcolor="#84BEFF" colspan="2"> <div align="left">
<input type="submit" name="B12" value="Przeslij" img src="bar.jpg">
<input name="Submit22" type="reset" value="Wyczysć" img src=bar.jpg">

<br>
</div>
<div align="right"></div>
<div align="right"></div></td>
</tr>
</tbody></table>
<br>
<script type="text/javascript">
function licz(pole,max){
if (pole.value.length > max){
pole.value = pole.value.substr(0,max);
}
}

</script>
</form>
<?
include("wpisy.txt");
?>
</BODY>
</HTML>


i plik "wyslij.php":
<?php
$str = $_POST['tresc'];
function bbcode($str)

{

$str = nl2br($str);



// usuń tagi HTML

$str = htmlspecialchars($str);



// akapit

$str = preg_replace("/\[p\](.*?)\[\/p\]/si", "<p>\\1</p>", $str);



// tekst pogrubiony

$str = preg_replace("/\[b\](.*?)\[\/b\]/si", "<b>\\1</b>", $str);



// tekst pochylony

$str = preg_replace("/\[i\](.*?)\[\/i\]/si", "<i>\\1</i>", $str);



// tekst podkreślony

$str = preg_replace("/\[u\](.*?)\[\/u\]/si", "<u>\\1</u>", $str);





// kod

preg_replace("#\[code\](.*?)\[/code\]#si", "<pre>\\1</pre>", $str);



// odnośnik

$str = preg_replace("#\[url\](.*?)?(.*?)\[/url\]#si", "<a href=\"\\1\\2\">\\1\\2</a>", $str);



// odnośnik - definiowane treści

$str = preg_replace("#\[url=(.*?)?(.*?)\](.*?)\[/url\]#si", "<a href=\"\\2\">\\3</a>", $str);



return $str;

}

echo bbcode($str);



$nick = $_POST['nick'];
$mail = $_POST['mail'];
$www = $_POST['www'];
$temat = $_POST['temat'];

$nick = HTMLSpecialChars($nick);
$mail = HTMLSpecialChars($mail);
$www = HTMLSpecialChars($www);
$temat = HTMLSpecialChars($temat);

$tresc = wordwrap($pole, 50, "\n", 1);
$wynik = '<b>Nick:</b> ' . $nick . '<br><b>E-mail:</b> <a href="mailto:' . $mail . '">' . $mail . '</a><br><b>Strona www:</b> <a target="_blank" href="' . $www . '">' . $www . '</a><br><b>Temat:</b> ' . $temat . '<br>' . $str . '<br><br>';
$plik = "wpisy.txt" ;
$fp = fopen($plik, "a");
fwrite ($fp, $wynik);
fclose($fp);
echo("Twój komentarz został wysłany! Aby zobaczyć komentarze <a href='dodaj.php'>kliknij tutaj</a>");


?>


oraz plik, w którym zapisują się komentarze - wpisy.txt z prawami chmod 666

Wszystko działa dobrze, ale co zrobić, aby nie wyświetlały mi się: E-mail, Strona www, Temat ?
Usunięcie napisów o kolorze czerwonym w kodzie pliku "wyslij.php" nie działa.
Bardzo proszę o pomoc.

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: N cze 19, 11 14:49
przez dpkradom
Zadziała ale:

Kod: Zaznacz cały
$wynik = '<b>Nick:</b> ' . $nick . '<br><b>E-mail:</b> <a href="mailto:' . $mail . '">' . $mail . '</a><br><b>Strona www:</b> <a target="_blank" href="' . $www . '">' . $www . '</a><br><b>Temat:</b> ' . $temat . '<br>' . $str . '<br><br>';


Musisz zamienić na:

Kod: Zaznacz cały
$wynik = '<b>Nick:</b> ' . $nick;


Kropka to tak jakby łącznik, więc na końcu jest niepotrzebna o czym pewnie zapomniałeś. Pozostałe części możesz
zakomentować wstawiając "//". Jeżeli Ci niepotrzebne $mail $www i $temat usuń odpowiednie inputy z formularza czyli input name="mail/www/temat". To chyba tyle ;) W razie pytań pisz.

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: N cze 19, 11 17:03
przez CrazyDevil
Teraz to wygląda tak:
Kod: Zaznacz cały
[...]
}

echo bbcode($str);



$nick = $_POST['nick'];
$mail = $_POST['mail'];
$www = $_POST['www'];
$temat = $_POST['temat'];
$nick  = HTMLSpecialChars($nick);
$mail  = HTMLSpecialChars($mail);
$www  = HTMLSpecialChars($www);
$temat  = HTMLSpecialChars($temat);
$tresc = wordwrap($pole, 50, "\n", 1);
$wynik = '<b>Nick:</b> ' . $nick;
       $plik = "wpisy.txt" ;
       $fp = fopen($plik, "a");
       fwrite ($fp, $wynik);
       fclose($fp);
    echo("Twój komentarz został wysłany! Aby zobaczyć komentarze <a href='dodaj.php'>kliknij tutaj</a>");


?>


Ale po dodaniu komentarza nie wyświetla się treść.. tylko nick
Co zrobić ?

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: N cze 19, 11 21:47
przez dpkradom
Nie analizowałem kodu wcześniej. Za dużo usunęliśmy, bo zmienna $str to treść wiadomości. Powinno być tak:

Kod: Zaznacz cały
$wynik = '<b>Nick:</b>'. $nick .'<br>'. $str .'<br><br>';

Re: Dodaj Komentarz i Wyślij plik

PostNapisane: Wt cze 21, 11 18:33
przez CrazyDevil
Dziękuję bardzo za pomoc ;))
Temat do zamknięcia :D