Dodaj Komentarz i Wyślij plik

Problemy związane ze stronami PHP

Dodaj Komentarz i Wyślij plik

Postprzez CrazyDevil » So cze 18, 11 16:45

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.
CrazyDevil
 
Posty: 9
Dołączył(a): So cze 18, 11 16:38

Re: Dodaj Komentarz i Wyślij plik

Postprzez dpkradom » So cze 18, 11 18:17

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".
dpkradom
 
Posty: 111
Dołączył(a): Cz maja 05, 11 18:41
Lokalizacja: Radom

Re: Dodaj Komentarz i Wyślij plik

Postprzez CrazyDevil » So cze 18, 11 22:23

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ę ;)
CrazyDevil
 
Posty: 9
Dołączył(a): So cze 18, 11 16:38

Re: Dodaj Komentarz i Wyślij plik

Postprzez dpkradom » N cze 19, 11 07:30

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. ;)
dpkradom
 
Posty: 111
Dołączył(a): Cz maja 05, 11 18:41
Lokalizacja: Radom

Re: Dodaj Komentarz i Wyślij plik

Postprzez CrazyDevil » N cze 19, 11 10:44

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.
CrazyDevil
 
Posty: 9
Dołączył(a): So cze 18, 11 16:38

Re: Dodaj Komentarz i Wyślij plik

Postprzez dpkradom » N cze 19, 11 14:49

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.
dpkradom
 
Posty: 111
Dołączył(a): Cz maja 05, 11 18:41
Lokalizacja: Radom

Re: Dodaj Komentarz i Wyślij plik

Postprzez CrazyDevil » N cze 19, 11 17:03

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ć ?
CrazyDevil
 
Posty: 9
Dołączył(a): So cze 18, 11 16:38

Re: Dodaj Komentarz i Wyślij plik

Postprzez dpkradom » N cze 19, 11 21:47

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>';
dpkradom
 
Posty: 111
Dołączył(a): Cz maja 05, 11 18:41
Lokalizacja: Radom

Re: Dodaj Komentarz i Wyślij plik

Postprzez CrazyDevil » Wt cze 21, 11 18:33

Dziękuję bardzo za pomoc ;))
Temat do zamknięcia :D
CrazyDevil
 
Posty: 9
Dołączył(a): So cze 18, 11 16:38


Powrót do PHP

Copyright © 2007-2011 ugu.pl
Wszelkie prawa zastrzeżone.
Polityka prywatności

cron