mboost-dp1

PHP hjælp fra Newz-folket!


Gå til bund
Gravatar #1 - PHP-Ekspert Thoroughbreed
27. mar. 2014 22:27
Mojn Newz! Skide godt at i altid har lyst til at hjælpe ...

Nuværende kildekode:


<form action="send.php" method="post">
<?php if($_GET['error']): ?>
<span class="error">Udfyld venligst de krævede felter.</span>
<?php endif; ?>
<?php if($_GET['succes']): ?>
<span class="error">E-mail er sendt.</span>
<?php endif; ?>

<p>Modtager:
<select name="recpt" id="recpt">
<option value="[email protected]">GME</option>
<option value="[email protected]">MPO</option>
<option value="[email protected]">Mig selv</option>
</select>
</p>
<p><input type="text" name="first_name" id="first_name" placeholder="Fornavn"></p>
<p><input type="text" name="last_name" id="last_name" placeholder="Efternavn"></p>
<p><input type="text" name="telephone" id="telephone" placeholder="Telefon nr."></p>
<p><input type="text" name="email" id="email" placeholder="E-Mail"></p>
<p><textarea name="comments" id="comments" placeholder="Besked" cols="30" rows="7"></textarea></p>
<p><input type="submit" value="Send"></p>
</form>



<?php

if(isset($_POST['email'])) {

$email_to = "[email protected]";

$email_subject = "Kontakt fra app.";


Mit problem er så følgende:

Hvordan får jeg PHP-scriptet til at fatte at modtagen ($email_to) er værdien fra <select>??!

Jeg har prøvet følgende:

$_GET, $recpt, $_POST samt echo

Det virkede umiddelbart ikke o_O

Jeg aner virkeligt ikke hvad jeg gør forkert, hilfe bitte!

Jeg giver 25 kr og en liter mælk til den der kommer med løsningen! :D
Gravatar #2 - apapap
27. mar. 2014 22:36
Jeg kan fint få e-mailen med:
echo $_POST['recpt'];

Det er det du har kaldt optionen, hvad
<input type="text" name="email" id="email" placeholder="E-Mail"></p>
laver ved jeg ikke? Men den kan jeg også fint få med echo $_POST['email'];


btw, husk at valider dine input, man kan helt sikkert lave rigtig grimme ting med det der
Gravatar #3 - PHP-Ekspert Thoroughbreed
28. mar. 2014 06:38
#2

Kan være jeg har lavet en syntax error o_O

Prøver lige igen ...

Ja, ved godt at koden er meget rå lige pt, men det er også kun til et proof of concept - brugte kun godt to timer på kode + design :)

IT afdelingen på min arbejdsplads havde sagt at det var umuligt at lave, og hvis nogle eksterne skulle lave det, ville det koste på den anden side af 100.000 ...

... challenge accepted!

- edit -


<input type="text" name="email" id="email" placeholder="E-Mail">


Er til afsenderens adresse
Gravatar #4 - PHP-Ekspert Thoroughbreed
28. mar. 2014 06:43
Nu prøvede jeg så følgende:


<?php

if(isset($_POST['email'])) {

$email_to = echo $_POST['recpt'];

$email_subject = "Kontakt fra app.";


Og nu skriver min editor "Syntax error in line 5", og hvis jeg tester det "live" får jeg en fejl. Eller rettere, der sker aller en ski'

- edit -

Fuck dig :P Nu virker det


$email_to = $_POST['recpt'];

$email_subject = "Kontakt fra app.";


Spørg mig ikke hvorfor - jeg må have haft en syntax error som min editor ikke har fanget før o_O

Men tak for hjælpen anyhow! Så gjorde jeg det åbenbart rigtigt "in the first place" :D

25 kr og en liter mælk i din retning ^_^
Gravatar #5 - Ronson ⅍
28. mar. 2014 08:03
$email_to = echo $_POST['recpt'];

Du kan næppe sætte $email_to til echo af variablen
Gravatar #6 - apapap
28. mar. 2014 08:04
#4

Dit problem er du skriver:

$email_to = echo $_POST['recpt'];

I PHP (ihvertfald) giver det ikke mening at sætter variablen $email_to til echo ...

echo er en funktion du bruger til at udskrive noget med.

Jeg bruger PHPStorm og den giver fint en fejl.


Edit: Jeg sender dig lige min adresse i en PM, de 25kr kan du bruge på porto til mælken?
Gravatar #7 - PHP-Ekspert Thoroughbreed
28. mar. 2014 08:50
#5 #6

Jamen det virker jo nu? Og det var #2 der skrev

echo $_POST['recpt'];
Gravatar #8 - bodhiBit
28. mar. 2014 09:13
overvej at bruge type="email" i stedet for type="text", så validerer browseren at det er en gyldig email-adresse før den tillader at sende det.. Men husk altid at validere server-side også..
Gravatar #9 - apapap
28. mar. 2014 09:14
#7,

...

Ja du skal bruge echo $_POST['recpt']; til at udskrive variablen med. Men du skriver $email_to = echo $_POST['recpt']; og det kan man ikke.
Gravatar #10 - PHP-Ekspert Thoroughbreed
28. mar. 2014 12:53
#8
Well, PHP scriptet validerer e-mailen ved at kræve* a-z + @ + a-z + . + a-z (simpelt skrevet)

Jeg har før oplevet problemer med type="email" - ved ikke om der har været andre ting serverside, men min gamle e-mail ([email protected]) blev rejected en del steder som en ikke-gyldig e-mail

#9
Nåja, jeg skrev hvad du skrev :P

- edit -

*

$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
Gravatar #11 - Slettet Bruger [3763591894]
28. mar. 2014 13:44
[Indlæg er markeret som spam]
Gravatar #12 - mrtb
28. mar. 2014 13:54
Email validering kan ende med at blive noget regex fra helvede, da stort set hvad som helst er gyldigt.
Hvis du kører PHP 5.2 eller nyere, så kan du benytte filter_var til at validere med:
filter_var('[email protected]', FILTER_VALIDATE_EMAIL)
http://www.php.net/manual/en/function.filter-var.p...


Edit: Den er stadig ikke 100% korrekt, men det er, efter min mening, pænere end de fleste regex man kan finde på området.
Gravatar #13 - PHP-Ekspert Thoroughbreed
28. mar. 2014 16:41
#11

Er tits ikke et godkendt TLD? If not, er det vel bare et spørgsmål om hvornår ^_^

Der er en anden validering, løn nr, som den tager fra medarbejder db'en - E-mail er blot så HR/modtageren kan svare direkte.

Hvis folk så angiver sut-min@røvhul.spasser - ja så får de ikke noget svar ;)
Gravatar #14 - apapap
29. mar. 2014 14:01
mrtb (12) skrev:
regex fra helvede


yup: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login