PHP program

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
mi lahko kak programer pogledaj kaj je narobe z tem php kontaktnim obrazcem, moral bi delati,
vnesel sem le svoj e- mail

<?php

// Set-up these 3 parameters
// 1. Enter the email address you would like the enquiry sent to
// 2. Enter the subject of the email you will receive, when someone contacts you
// 3. Enter the text that you would like the user to see once they submit the contact form
$to = 'info@pc-storitve.si';
$subject = 'info@pc-storitve.si';
$contact_submitted = 'Your message has been sent.';

// Do not amend anything below here, unless you know PHP
function email_is_valid($email) {
return preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i',$email);
}
if (!email_is_valid($to)) {
echo '<p style="color: red;">You must set-up a valid (to) email address before this contact page will work.</p>';
}
if (isset($_POST['contact_submitted'])) {
$return = "\r";
$youremail = trim(htmlspecialchars($_POST['your_email']));
$yourname = stripslashes(strip_tags($_POST['your_name']));
$yourmessage = stripslashes(strip_tags($_POST['your_message']));
$contact_name = "Name: ".$yourname;
$message_text = "Message: ".$yourmessage;
$user_answer = trim(htmlspecialchars($_POST['user_answer']));
$answer = trim(htmlspecialchars($_POST['answer']));
$message = $contact_name . $return . $message_text;
$headers = "From: ".$youremail;
if (email_is_valid($youremail) && !eregi("\r",$youremail) && !eregi("\n",$youremail) && $yourname != "" && $yourmessage != "" && substr(md5($user_answer),5,10) === $answer) {
mail($to,$subject,$message,$headers);
$yourname = '';
$youremail = '';
$yourmessage = '';
echo '<p style="color: blue;">'.$contact_submitted.'</p>';
}
else echo '<p style="color: red;">Please enter your name, a valid email address, your message and the answer to the simple maths question before sending your message.</p>';
}
$number_1 = rand(1, 9);
$number_2 = rand(1, 9);
$answer = substr(md5($number_1+$number_2),5,10);
?>
<form id="contact" action="contact.php" method="post">
<div class="form_settings">
<p><span>Name</span><input class="contact" type="text" name="your_name" value="<?php echo $yourname; ?>" /></p>
<p><span>Email Address</span><input class="contact" type="text" name="your_email" value="<?php echo $youremail; ?>" /></p>
<p><span>Message</span><textarea class="contact textarea" rows="5" cols="50" name="your_message"><?php echo $yourmessage; ?></textarea></p>
<p style="line-height: 1.7em;">To help prevent spam, please enter the answer to this question:</p>
<p><span><?php echo $number_1; ?> + <?php echo $number_2; ?> = ?</span><input type="text" name="user_answer" /><input type="hidden" name="answer" value="<?php echo $answer; ?>" /></p>
<p style="padding-top: 15px"><span> </span><input class="submit" type="submit" name="contact_submitted" value="send" /></p>
</div>
</form>
</div>


hvala in lp
 

Utisevalec

Guru
12. nov 2007
16.102
4.072
113
Kaj pa ne dela?

Ce ne pošlje maila potem je krivda v mail() funkciji, veliko providerjev je namreč ne omogča (ker rabiš delujoči sendmail na mašini)!

Edit: sicer koda deluje OK, ni napake v sintaksi ipd.
 
Nazadnje urejeno:

doto

Fizikalc
25. jul 2007
3.175
0
36
V php.ini moraš nastaviti parametre za mail() funkcijo. Za windows sisteme se nastavi ip od smtp strežnika, za *nix sisteme pa pot do sendmail aplikacije.
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
vse skopiram na server in v vrstici, kjer piše Name se v oknu, kjer bi naj uporabnik napisal svoje ime izpiše tole

<br /><b>Notice</b>: Undefined variable: yourname in <b>/home/spletnic/public_html/contact.php</b> on line <b>122</b><br />

v vrstici za mail pa tole

<br /><b>Notice</b>: Undefined variable: youremail in <b>/home/spletnic/public_html/contact.php</b> on line <b>123</b><br />

v vrstici za sporočilo pa

<br />
<b>Notice</b>: Undefined variable: yourmessage in <b>/home/spletnic/public_html/contact.php</b> on line <b>124</b><br />

kaj moram spremeniti v kodi, da ne bo tega in bo deloval

hvala in lp
 

erikson

Guru
25. avg 2007
22.345
6.145
113
Izklopi izpis obvestil v PHP ("display_errors = Off" v php.ini).

Ob prvem klicu polja še nimajo vrednosti in se nič ne izpiše.

Lahko pa pred vrstico "$number_1 = rand(1, 9);" dodaš:

else {
$yourname = '';
$youremail = '';
$yourmessage = '';
}
 

doto

Fizikalc
25. jul 2007
3.175
0
36
Na začetku za <? dodaj spodnjo kodo:

$yourname = "";
$youremail = "";
$yourmessage = "";
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
Naredil sem po navodil erikson kot prvi odgovor, sem dobil sporočilo na mail,
sedaj paizpiše še tole v 107 vrstici

Deprecated: Function eregi() is deprecated in /home/spletnic/public_html/contact.php on line 107


hvala
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
povratni mail vsebuje le ime in sporočilo, ne pa maila, se da še to popraviti

hvala in lp
 

erikson

Guru
25. avg 2007
22.345
6.145
113
Funkcija eregi naj se od PHP 5.3 ne bi več uporabljala. Ampak še deluje.
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
doto

nevem kje točno si mislil, da prilepim tole

Na začetku za <? dodaj spodnjo kodo:

hvala in lp
 

erikson

Guru
25. avg 2007
22.345
6.145
113
Mail imaš v From.

Lahko ga dodaš:

$message = $contact_name . $return . $message_text;

spremeni v

$message = $contact_name . " (" . $youremail . ")" . $return . $message_text;
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
hvala erikson,kako pa naj to rešim, funkcije nemorem kar tako zamenjati, kot pravi mikrohard

Naredil sem po navodil erikson kot prvi odgovor, sem dobil sporočilo na mail,
sedaj pa izpiše še tole v 107 vrstici

Deprecated: Function eregi() is deprecated in /home/spletnic/public_html/contact.php on line 107


hvala
 

erikson

Guru
25. avg 2007
22.345
6.145
113
Tole pobriši, ker ni potrebno:

!eregi("\r",$youremail) && !eregi("\n",$youremail) &&
 

dejvi

Fizikalc
30. avg 2010
1.324
0
36
maribor
vsakih nekaj ur dobim na mail responce sporočilo,ki sem ga napisal na serverju.
To sporočilo je v bistvu odgovor, čemi nekdo piše iz kontaktnega obrazca na moji spletne strani.
sem kontaktiral kjer gostuje moja stran in pravijo,da problem ni pri njih,da je v kodi php obrazca.
Koda mojega kontaktnega je malo višje, če lahko kdo prosim pogleda,

hvala