Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt wymagający poprawek
onlyX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Sworzyłem taki skromny kod dodający dane do tabeli w bazie danych.
I prosiłbym ludzi lepiej znających php ode mnie o wytknięcie mi błędów, ew. wniesienie poprawek.

[php:1:bb63b676fa]
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<LINK REL=stylesheet HREF="style.css" TYPE="text/css">
</HEAD>
<BODY>
<?php
$autor_id = $_POST['autor_id'];
$tytul = $_POST['tytul'];
$f_akapit = $_POST['f_akapit'];
$tresc = $_POST['tresc'];
$arrLocale = array( "pl_PL", "polish_pol" );
setlocale( LC_ALL, $arrLocale );
$data = strftime("%A, %d %B %Y");
$sql = mysql_connect ("mojserwer.pl", "login", "hasło");
mysql_select_db("viking");
$zapytanie = mysql_query('SELECT `username` FROM `phpbb_users` WHERE `user_id` = '.$autor_id);
$row = mysql_fetch_array($zapytanie);
$autor = $row['username'];
$zapytanie = "INSERT INTO `w_arts` ( `id` , `data` , `autor_id` , `autor` , `tytul` , `f_akapit` , `tresc` ) VALUES ( '', '$data', '$autor_id', '$autor', '$tytul', '$f_akapit', '$tresc' )";
$wykonaj=mysql_query($zapytanie);
?>

<?php
$sql = mysql_connect ("mojserwer.pl", "login", "hasło");
mysql_select_db("viking");
$query = 'SHOW TABLE STATUS LIKE "w_arts"';
$result = @mysql_query($query);
$row2 = @mysql_fetch_array($result, MYSQL_ASSOC);
$row2['Auto_increment'];
$num_id = ($row2['Auto_increment'] -1);
$zapytanie = mysql_query("SELECT * FROM `w_arts` WHERE id=$num_id");
$row = mysql_fetch_array($zapytanie);
echo ('<CENTER><TABLE WIDTH="700" CELLSPACING="0" CELLPADDING="0" BORDER="0" STYLE="background:url(../gfx/bg_tab.gif)">
<TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Data i autor</P></TD>
<TD>'.$row['data'].' || <A HREF="http://www.user.mtnet.com.pl/viking/forum/profile.php?mode=viewprofile&u='.$row['autor_id'].'">'.$row['autor'].'</A> || id='.$row['autor_id'].'</TD></TR>
<TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Tytuł artykułu</P></TD>
<TD>'.$row['tytul'].'</TD></TR><TR><TD WIDTH="200"><SPAN class="nag_right">&nbsp;&raquo;&nbsp;Pierwszy akapit</SPAN><BR><SPAN class="des_just">Akapit ten jest wstępem do tekstu, powinien po krótce przedstawiać tematykę artykułu (max. 3-4 zdania).</SPAN></TD>
<TD>'.$row['f_akapit'].'</TD></TR><TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Treść artykułu</P></TD>
<TD>'.$row['tresc'].'</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;&laquo;&nbsp;<A HREF="dadaj_art.html">Wstecz</A></TD></TR></TABLE></CENTER>');
?>
</BODY>
</HTML>
[/php:1:bb63b676fa]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
invx
post
Post #2





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


ale dziala Ci questionmark.gif, skoro tak to jest poprawny. A to jak sie rozwiaze dany problem to zalezy od osoby ktura go rozwiazuje. smile.gif
P.S.
sa wyjatki


--------------------
RCXcms
www.rcx.prv.pl
Pierwszy polski w pełni zintegrowany system portal
Go to the top of the page
+Quote Post
e4you
post
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


zmienna $sql moze byc 1 raz a Ty ja masz uzytą pare razy. smile.gif

zmienna $zapytanie tez jest 2 razy uzyta


--------------------
"Dla mnie SCHRANZ nigdy nie byl nazwą stulu muzycznego.A raczej określeniem przesterowaniem dzwięków. Czy nawet halasu... Sądzę, że wyroslo nowe pokolenie. które nie chce się identyfikować z techno z trance" - Chris Liebing

www.netklinik.
Go to the top of the page
+Quote Post
onlyX
post
Post #4





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Cytat
A to jak sie rozwiaze dany problem to zalezy od osoby ktura go rozwiazuje.

A jeśli osoba, która rozwiązuje ten problem (w tym wypadku ja) nie jest do końca zadowolona z tego co stworzyła? Chce uczynić ten kod bardziej przejrzystym i funkcjonalnym.
Może jednak znajdzie się ktoś kto da wskazówki.
Go to the top of the page
+Quote Post
shima
post
Post #5





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

Ostrzeżenie: (0%)
-----


Cytat
zmienna $sql moze byc 1 raz a Ty ja masz uzytą pare razy. smile.gif

zmienna $zapytanie tez jest 2 razy uzyta

Dlaczego? Może użyć wiele razy, inna sprawa: po co? Wystarczy raz utworzyć połączenie z bazą. A zapytania mogą się zmieniać.


--------------------
Nie ma nic stałego prócz zmiany...
Go to the top of the page
+Quote Post
e4you
post
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 10.03.2004
Skąd: K-ce

Ostrzeżenie: (50%)
XXX--


to mialem na mysli


--------------------
"Dla mnie SCHRANZ nigdy nie byl nazwą stulu muzycznego.A raczej określeniem przesterowaniem dzwięków. Czy nawet halasu... Sądzę, że wyroslo nowe pokolenie. które nie chce się identyfikować z techno z trance" - Chris Liebing

www.netklinik.
Go to the top of the page
+Quote Post
onlyX
post
Post #7





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


A może dałoby się poprawić przejżystość tego skryptu?
Go to the top of the page
+Quote Post
hwao
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




php pocz -> Skrypty php
Go to the top of the page
+Quote Post
cboot
post
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 2.02.2004

Ostrzeżenie: (0%)
-----


[php:1:fbbc76639d]<?php
// zmienne liczbowe z zewnątrz - zapobiegamy sql injection
$autor_id = (int) $_POST['autor_id'];
// zmienne tekstowe z zewnątrz - zapobiegamy umieszczaniu javascript i tym podobnych
$tytul = strip_tags($_POST['tytul']);
$f_akapit = strip_tags($_POST['f_akapit']);
$tresc = strip_tags($_POST['tresc']);
?>[/php:1:fbbc76639d]
Warto byłoby też pamiętać o łataniu wszelkich luk umożliwiających SQL injection. Stąd conajmniej ta konwersja $autor_id z POST (luka ta umożliwiała drobną penetrację tabeli phpbb_users). Na wszelki wypadek (jeśli skrypt byłby np. rozbudowywany w przyszłości) można łatać tak wszystkie zmienne liczbowe otrzymywane z zewnątrz (post, get, cookies). Zmienne tekstowe są w tym wypadku nieszkodliwe, jeśli mamy ustawione na serwerze magic_quotes_gpc. Wszelkie inne zmienne, które są wstawiane do zapytań bez apostrofów czy cudzysłowów, to potencjalne SQL injection.
Po co zabezpieczać się przed javascript, który później mógłby być wyświetlony na stronie, to chyba nie muszę tłumaczyć.
Go to the top of the page
+Quote Post
onlyX
post
Post #10





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Dzieki. O tego typu wskazówki mi chodziło.
Niestety nie moge skorzystać z funkcji strip_tags() ponieważ usuwa ona równierz znaczniki html, których potrzebuje do formatowania tekstu. Ten skrypt bedzie używany tylko przez osoby upoważnione, więc takie zabezpieczenia nie będą potrzebne.
Go to the top of the page
+Quote Post
cboot
post
Post #11





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 2.02.2004

Ostrzeżenie: (0%)
-----


Możesz też w strip_tags podać tagi, których nie chcesz usuwać: [manual:7de6564bc6]strip_tags[/manual:7de6564bc6]. I wymienić jako drugi parametr tej funkcji te bezpieczne tagi, które służa jedynie do formatowania tekstu.
Go to the top of the page
+Quote Post
onlyX
post
Post #12





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Jeszcze raz dzięki. Problem rozwiązałem w ten sposób.
[php:1:776231c8bb]<?php
$znaczniki = "<P>, <SPAN>, <B>, <I>, <BR>";
$tytul = strip_tags($_POST['tytul']);
$f_akapit = strip_tags($_POST['f_akapit'], $znaczniki);
$tresc = strip_tags($_POST['tresc'], $znaczniki);
?>[/php:1:776231c8bb]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:17