![]() |
![]() |
![]()
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"> » 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"> » Tytuł artykułu</P></TD> <TD>'.$row['tytul'].'</TD></TR><TR><TD WIDTH="200"><SPAN class="nag_right"> » 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"> » Treść artykułu</P></TD> <TD>'.$row['tresc'].'</TD></TR><TR><TD> </TD><TD> « <A HREF="dadaj_art.html">Wstecz</A></TD></TR></TABLE></CENTER>'); ?> </BODY> </HTML> [/php:1:bb63b676fa] |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%) ![]() ![]() |
ale dziala Ci
![]() ![]() P.S. sa wyjatki -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
zmienna $sql moze byc 1 raz a Ty ja masz uzytą pare razy.
![]() 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. |
|
|
![]()
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. |
|
|
![]()
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.
![]() 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...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
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. |
|
|
![]()
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?
|
|
|
![]()
Post
#8
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
php pocz -> Skrypty php
|
|
|
![]()
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ć. |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]()
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] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 19:17 |