OT - zlecę usprawnienie formularza kontaktowego PHP

W tym miejscu możemy do woli sprzedawać, kupować, oddawać przedmioty związane z Commodore oraz inne rzeczy kwalifikujące się do kategorii retro.
Wiadomość
Autor
Awatar użytkownika
SUDi
Posty: 1387
Rejestracja: 04 lis 2008, 23:03

OT - zlecę usprawnienie formularza kontaktowego PHP

#1 Post autor: SUDi »

Jak w temacie, chodzi o przeróbkę kodu PHP formularza kontaktowego na stronie www, żeby w mejlu przychodzącym z treścią zapytania wysłanego z tegoż formularza był napisany także IP komputera wysyłającego zapytanie. Zainteresowanych proszę na priv.

elban
Posty: 1603
Rejestracja: 17 wrz 2008, 11:19
Grupa: aRise

#2 Post autor: elban »

wrzuc zrodlo.

to 5 minut roboty, jak Cie ktos za to skasuje, wiec niz dwa piwka to przylep mu post-it na czole z napisem 'kutas'.
was twenty, is five, my friend...

Awatar użytkownika
SUDi
Posty: 1387
Rejestracja: 04 lis 2008, 23:03

#3 Post autor: SUDi »

Postawie nawet 4-pak bez żółtej karteczki na czoło :)

Część PHP pliku form.php :

<?php
if( strlen($_POST['meno'])>0 && strlen($_POST['email'])>0 && strlen($_POST['tele'])>0 && strlen($_POST['odkaz'])>0)
{
$sprava =
"Osoba: ".$_POST['meno']."
Tel.: ".$_POST['tele']."
Tekst: ".$_POST['odkaz']." ";

$tema = "Wiadomosc - od ".$_POST['email'];

mail ("xxx@xxx.pl", $tema, $sprava,
"From: xxx@xxx.pl\r\n"
."Reply-To: xxx@xxx.pl\r\n"
."Content-Type: text/plain; charset=utf-8\r\n"
."Content-Transfer-Encoding: 8bit\r\n"
."X-Mailer: PHP/" . phpversion());

echo "<b>Dziękujemy za wysłanie formularza.</b>";
}
else
{
echo "<b>Niestety, nie można wysłać wiadomości.</b>";
}
?>

Część HTML na stronie z formularzem do wypełnienia :

<h3>Formularz</h3>
<p>Formularz kontaktowy.
<br />Kontaktować można też poprzez e-mail na &nbsp;&nbsp;<a href="mailto:xxx@xxx.pl?subject=">xxx@xxx.pl</a>
<br /><br /><b>Do prawidłowego działania, proszę wypełnić <u>wszystkie pola</u> formularza</b> :
<br /><br />
<form method="post" action="form.php" name="form">
<label for="meno">Osoba :</label><input type="text" class="text" id="meno" name="meno" size="50" maxlength="50" /><br />
<label for="email">Kontakt email :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input type="text" name="email" class="text" id="email" size="50" maxlength="50" /><br />
<label for="tele">Nr tel. :&nbsp;&nbsp;&nbsp;&nbsp;</label><input type="text" name="tele" class="text" id="tele" size="50" maxlength="50" /><br />
<label for="odkaz">Treść :&nbsp;&nbsp;&nbsp;</label><textarea name="odkaz" id="odkaz" cols="56" rows="5">Tutaj wpisać tekst...</textarea><br /><br />
<input type="submit" value="Wyślij formularz" />
</form></p>

Awatar użytkownika
leming
Posty: 538
Rejestracja: 15 wrz 2008, 10:15
Grupa: Onslaught, Fatum

#4 Post autor: leming »

tak na szybcika to daj

Kod: Zaznacz cały

<?php 

$ip = getenv( "REMOTE_ADDR" );
if( strlen($_POST['meno'])>0 && strlen($_POST['email'])>0 && strlen($_POST['tele'])>0 && strlen($_POST['odkaz'])>0) 
{ 
$sprava = 
"Osoba: ".$_POST['meno']." 
Tel.: ".$_POST['tele']." 
Tekst: ".$_POST['odkaz']." 
IP: $ip "; 

$tema = "Wiadomosc - od ".$_POST['email']; 

mail ("xxx@xxx.pl", $tema, $sprava, 
"From: xxx@xxx.pl\r\n" 
."Reply-To: xxx@xxx.pl\r\n" 
."Content-Type: text/plain; charset=utf-8\r\n" 
."Content-Transfer-Encoding: 8bit\r\n" 
."X-Mailer: PHP/" . phpversion()); 

echo "<b>Dziękujemy za wysłanie formularza.</b>"; 
} 
else 
{ 
echo "<b>Niestety, nie można wysłać wiadomości.</b>"; 
} 
?> 
i bedzie chulac.
Ten post wyraża moją opinię w dniu dzisiejszym.Nie może on służyć przeciwko mnie w dniu jutrzejszym,ani każdym innym następującym po tym terminie.Ponadto zastrzegam sobie prawo zmiany poglądów bez podania przyczyny.

Awatar użytkownika
SUDi
Posty: 1387
Rejestracja: 04 lis 2008, 23:03

#5 Post autor: SUDi »

Dzięki Leming, śmiga aż miło.
To przy okazji trochę pogłębię temat :
- wysyłający wiadomość może "ominąć" w jakiś sposób wyświetlenie jego IP?
- czy z powodu jakichś zabezpieczeń, firewalli itp. po stronie wysyłającego może się stać że nie będzie mógł wysłać wiadomość przez ten form?

Awatar użytkownika
kmeg
Posty: 468
Rejestracja: 08 wrz 2009, 15:33
Grupa: Albion Crew

#6 Post autor: kmeg »

SUDi pisze:może się stać że nie będzie mógł wysłać wiadomość przez ten form?
Może, IP zawsze jakieś będzie ale może być trochę inne niż rzeczywiste:
- różnego rodzaju proxy
- tunele
- ukrywacze typu TOR i spółka

Form będzie raczej zawsze działał...

elban
Posty: 1603
Rejestracja: 17 wrz 2008, 11:19
Grupa: aRise

#7 Post autor: elban »

mozesz troche z ukrywaniem sobie pomoc (ale niewiele), na przyklad tak

zamiast

Kod: Zaznacz cały

$ip = getenv( "REMOTE_ADDR" ); 
daj:

Kod: Zaznacz cały

$headers = apache_request_headers();
if (array_key_exists('X-Forwarded-For', $headers)){
  $ip=$headers['X-Forwarded-For'] . ' via ' . $_SERVER["REMOTE_ADDR"];
} else {
  $ip=$_SERVER["REMOTE_ADDR"];
}
(via net ta funkcja, bo php nie pamietam, nie pisalem od lat w tym, wiec do sprawdzenia)
[/code]
was twenty, is five, my friend...

Awatar użytkownika
SUDi
Posty: 1387
Rejestracja: 04 lis 2008, 23:03

#8 Post autor: SUDi »

dzięki elban, będę próbował Twoją opcję...
temat jest dla mnie dość ciekawy, szczególnie że z takich spraw jestem zielony - jakbyś mi łopatologicznie wytłumaczył w czym pomoże ten kodzik? próbuje pobrać IP w inny sposób?

elban
Posty: 1603
Rejestracja: 17 wrz 2008, 11:19
Grupa: aRise

#9 Post autor: elban »

jezeli w naglowku znajduje sie pole X_FORWARDED_FOR uzyj tego pola plus podaj IP. Czyli jezeli serwer www wykuma, ze ktos korzystal z proxy dostaniesz takie info. jezeli nie dostaniesz samo IP.

getevn i $_SERVER['REMOTE_ADDR'] to z grubsza to samo. Szczegoly poda dokumetnacja php.
was twenty, is five, my friend...

Awatar użytkownika
SUDi
Posty: 1387
Rejestracja: 04 lis 2008, 23:03

#10 Post autor: SUDi »

@elban : OK, wypróbowałem Twój kodzik, działa również, tzn. wyświetla coś takiego IP : numer.IP numer.IP via numer.IP...
próbowałem formularz wysłać normalnie "bez ukrycia", a potem przez strony anonimowe proxy (Glype i PHProxy) i w każdym przypadku wszystkie trzy numery.IP były takie same (oczywiście te anonimowe serwery miały zagraniczne IP, ale wszystkie trzy pokazało takie same).
Czyli na niewiele się to zdaje, chyba że istnieje możliwość że mógłbym coś spróbować włączyć jakąś opcję w ustawieniach serwera domeny. Za czym miałbym się rozglądać?

kotrobot
Posty: 2362
Rejestracja: 06 lis 2008, 13:55
Grupa: URDAD

#11 Post autor: kotrobot »

Gdyby można było "złamać" anonimowe proxy, czy tora kilkoma linijkami kodu, to korzystanie z tychże nie miałoby sensu. Odpuść.
Olo forum atakuje. Żadnej litości nie czuje.

elban
Posty: 1603
Rejestracja: 17 wrz 2008, 11:19
Grupa: aRise

#12 Post autor: elban »

Tak jak pisze Cresh. Niektore proxy dodadza ten naglowek, inne nie.

Jak chcesz sledzic userow musisz byc cwanszy, ale to i tak bedzie zawsze do obejscia.
was twenty, is five, my friend...

ODPOWIEDZ