Skocz do zawartości
JaMała

[php] I Krasnal

Rekomendowane odpowiedzi

No moze nie dokońca z Ta funkcją. Mam pytanie: stworzyłam funkcje która ma wysyłać maile jednak jest mały problem z kodem. Jest gdzieś błąd parsowania (nie wiem gdzie :( ).

<?
//dla panelu administratora
if($_POST[login]!="")
{
 $zapytanie='select adres from uzyt where login=$_POST[login]';
 $wynik=mysql_query($zapytanie);
 $row=mysql_fetch_row($wynik);
 $do_kogo=$row[0];
 $temat="Twój artykuł został przyjęty";
 $tresc="witaj".$_POST[login]."uprzejmie informuję że Twój artykuł został przyjęty \n
 do bazy artykułów portalu Wi-Fipedia";
 $naglowki = "Reply-to: ewa <erasz@op.pl>\r\n";
 $naglowki .= "From: ewa <erasz@op.pl >\r\n";
 mail($do_kogo, $temat, $tresc, $naglowki);
 }
 else
 echo"musisz wpisać login";
?>

 

 

 

A tak poza tym to mam pytanie : czy jest możliwe takie skonfigurowanie Krasnal Serv 2.7 na zewnętrzny serwer SMTP aby można było wysyłać maile przez funkcję mail()? Narazie dokonałam konfiguracji w pliku php.ini na taką :

[mail function]

; For Win32 only.

SMTP =smtp.wp.pl

 

; For Win32 only.

sendmail_from =mójmail@wp.pl

ale przy takiej konfiguracji wyświetla mi błąd serwera SMTP. Tak sie zastanawiam czy wogóle taką funkcje można wykonywać pod Krasnalem?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

$zapytanie='select adres from uzyt where login=$_POST[login]';
Nie jestem pewien czy ta zmienna login zostanie tu wstawiona. Jesli chcesz wyłuskać zawartosć zmiennej używa się cudzysłowiów " $_POST[...]" a nie ' '. POjedyncze kopiują tekst bez sprawdzania zawartości zmiennych. POza tym jesli chcesz uzyskać zmiennąz POSTa to należało by napisać $_POST['login'];

 

Dlatego najbezpieczniej użyć konstrukcji składanej...

$zapytanie='select adres from uzyt where login='.$_POST['login'];

Tutaj niepotrzebnie marnujesz czas procesora :)

$tresc="witaj".$_POST[login]."uprzejmie informuję że Twój artykuł został przyjęty \n
Gdyż parser PHP sprawdza text pod kątem wystąpienia w nim zmiennej. Aczkolwiek to niewielki błąd. Jesli już stosujesz "to jest $zmienna"; lub 'to jest '.$zmienna;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To jest coś paskudnego:

 

$zapytanie='select adres from uzyt where login=$_POST[login]';

Jeśli już tak to dajemy ciapki podwójne ("). PHP nie interpretuje zmiennych zawartych w pojedynczych ciapkach.

 

Poza tym rozważ kilka przypadków:

- co się stanie jeśli loginu nie będzie?

- co się stanie jeśli zrobimy sql injecta - choćby dla przykładu pod zmienną $_POST['login'] będzimy mieli słowo "login"? W tym momenie będziesz miał coś takiego:

 

SELECT adres FROM uzyt WHERE login=login;

 

Oczywiście sposobem na uniknięcie tego jest wstawienie w ciapki $_POST[login].

 

$zapytanie="select adres from uzyt where login=\'$_POST[login]\'";

Ale co w tym wypadku jeśli pod $_POST[login] dostaniemy stringa takiego "coś' or 1=1 "?

 

W tym wypadku dostaniemy query:

SELECT adres FROM uzyt WHERE login='coś' or 1=1;

 

Wynik wiadomy. Więc na przyszłość - zanim się jakąś zmienną przypisze na podstawie danych przychodzących z zewnątrz, a już szczególnie tych które wykorzystujemy w sql'u należy sprawdzić i przepuścić przez odpowiednie filtry.

 

Najwygodniej jest zrobić to wykorzystując dla odpowiednich dane na przykład takie funkcje jak addslashes, htmlspecialchars, intval, etc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...