Gå til innhold

Kontaktskjema som feiler


Anbefalte innlegg

Jeg driver å lager en side for en Counterstrike klan. Jeg trengte et mail-skjema, og jeg gadd ikke lage et fra scratch så jeg brukte et jeg fant her på forumet. Det ser altså sånn ut:

 

 

<form action="<?php "$PHP_SELF" ?>" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn"><br> 
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato"><br> 
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map"><br> 
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25"></textarea><br> 
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!"> 
<input type="reset" class="knapp" value="Slett" name="SLETT"> </p>

</form> 
<?php 
if ($submit) 
{ 
if (!$navn) 
{ 
    echo ("<p>Du har glemt å oppgi navnet ditt</p>"); 
} 
if (!$epost) 
{ 
    echo ("<p>Du har glemt å oppgi epost</p>"); 
} 
if (!$dato)
{
    echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
} 
if (!$map)
{
   echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>")
}   
if (!$tekst) 
{ 
    echo ("<p>Du har glemt å skrive en beskjed</p>"); 
} 
else 
{ 
    $sendto = "[email protected]"; // Skriv inn din e-mail. 
    $subject = "Utfordring"; // Her velger du tittel. 
 $ip=$REMOTE_ADDR;
    $message = " 
    Navn: $navn ($epost) 
    Tekst: $tekst
 
 Senders ip: $ip
 
    "; 
      
   $headers = "Fra: $navn\r\n"; 
     mail($sendto, $subject, $message, $headers); 
     echo ("<p>Meldingen din er sendt.</p>"); 
 } 
} 
?>

 

 

På siden bruker jeg et php-include script, som virker som det skal derfor det er relevant

Problemet er at når jeg bruker den siste snutten med php-kode (altså selve mailscriptet) så vises ingenting, ikke engang form-elementene. Dersom jeg fjerner php-koden på slutten, vises det som det skal. Jeg har sjekket at php-kode blir parset, så det er ikke ploblemet. Noen som har snøring på hva dette er?

Endret av Mira
Lenke til kommentar
Videoannonse
Annonse

Eg bruker dette som fungerer fint. Ligger nå minimalt i skjemaet her. men du ser poenget. Har delt opp i to filer, ei html og ei php.

 

mail.html:

<html>

<head>
<title>Mailskjema</title>
</head>

<body>

<form name="mail" action="mail.php" method="post">
<input type="text" name="melding" size="30">
<input type="submit" name="submitButtonName">
</form>

</body>
</html>

 

mail.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>
</title>
</head>
<body>
<?php

$melding = $_POST['melding'];

if($_POST['melding'] == "") {

echo 'Du må fylle ut <u>alle</u> feltene i skjemaet før du sender!';

} else {

$from = '[email protected]';
$to = '[email protected]';
$subject = 'Mail via skjema';
$message = 'Melding frå webside: '.$melding;

mail($to, $subject, $message, "From: $from");

echo 'Melding er sendt!';

}

?>

</body>
</html>

Endret av smh
Lenke til kommentar

Kanskje det virker dersom du legger til denne linja rett under:

<?php

$"variabel" = $_POST['"variabel"'];

 

Bytt ut "variabel" med din variabel.

 

Dette blei dårlig forklart, men håper du forstår.

Endret av smh
Lenke til kommentar
Jeg driver å lager en side for en Counterstrike klan. Jeg trengte et mail-skjema, og jeg gadd ikke lage et fra scratch så jeg brukte et jeg fant her på forumet. Det ser altså sånn ut:

 

 

<form action="<?php "$PHP_SELF" ?>" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn"><br> 
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato"><br> 
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map"><br> 
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25"></textarea><br> 
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!"> 
<input type="reset" class="knapp" value="Slett" name="SLETT"> </p>

</form> 
<?php 
if ($submit) 
{ 
if (!$navn) 
{ 
    echo ("<p>Du har glemt å oppgi navnet ditt</p>"); 
} 
if (!$epost) 
{ 
    echo ("<p>Du har glemt å oppgi epost</p>"); 
} 
if (!$dato)
{
    echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
} 
if (!$map)
{
   echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>")
}   
if (!$tekst) 
{ 
    echo ("<p>Du har glemt å skrive en beskjed</p>"); 
} 
else 
{ 
    $sendto = "[email protected]"; // Skriv inn din e-mail. 
    $subject = "Utfordring"; // Her velger du tittel. 
 $ip=$REMOTE_ADDR;
    $message = " 
    Navn: $navn ($epost) 
    Tekst: $tekst
 
 Senders ip: $ip
 
    "; 
      
   $headers = "Fra: $navn\r\n"; 
     mail($sendto, $subject, $message, $headers); 
     echo ("<p>Meldingen din er sendt.</p>"); 
 } 
} 
?>

 

 

På siden bruker jeg et php-include script, som virker som det skal derfor det er relevant 

Problemet er at når jeg bruker den siste snutten med php-kode (altså selve mailscriptet) så vises ingenting, ikke engang form-elementene. Dersom jeg fjerner php-koden på slutten, vises det som det skal. Jeg har sjekket at php-kode blir parset, så det er ikke ploblemet. Noen som har snøring på hva dette er?

5726325[/snapback]

 

Det første jeg ville gjort var å sette inn denne linjen:

ERROR_REPORTING(E_ALL);

Da vil du se at du har feil i scriptet ditt, noen } som mangler og noen som er feilplassert.

 

Dessuten er det noen logiske feil i scriptet ditt. Du forsøker å si at hvis submitknappe n er trykket så skal den sjekke alle inputfelt. Det er helt fint, men så sier du at hvis inputknappen ikke er trykket (else-biten) så skal man sende en epost.

 

jeg har endret litt på scriptet ditt:

<?php
/* 
* Viser alle feil - fint for debugging, i live-script ville jeg satt 
* denne til (E_NONE) eller loggført feil
*/
error_reporting(E_ALL);

/*
* Trinær operator.
* Sier at hvis feltene er tomme er variabelen lik "" ellers
* verdien som bruker har skrevet inn
*/
$submit = isset($_POST['submit']);
$navn = empty($_POST['navn']) ? "" : $_POST['navn'];
$epost = empty($_POST['epost']) ? "" : $_POST['epost'];
$dato = empty($_POST['dato']) ? "" : $_POST['dato'];
$map = empty($_POST['map']) ? "" : $_POST['map'];
$tekst = empty($_POST['tekst']) ? "" : $_POST['tekst'];

/*
* En enklere måte å skrive ut html på, og i tillegg
* kan du bruke variabelnavn i scriptet, eks $navn, $epost osv
* Må ikke ha whitespace før html-koden
*/
print
<<<HTML
<form action="" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn" value="$navn"><br>
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost" value="$epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato" value="$dato"><br>
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map" value="$map"><br>
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25" value="$tekst"></textarea><br>
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!">
<input type="reset" class="knapp" value="SLETT" name="slett"> </p>
</form>
HTML; /* Avslutter html-koden */

/*
* Hvis submitknappen er trykket - gjør dette:
*/
if ($submit){
/* 
* Sjekker navnefelt
* De andre feltene sjekkes på samme måte
*/
if (!$navn){
   	echo ("<p>Du har glemt å oppgi navnet ditt</p>");
   	// "return" avbryter scriptet
   	return;
}
if (!$epost){
   	echo ("<p>Du har glemt å oppgi epost</p>");
   	return;
}
if (!$dato){
   	echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
   	return;
}
if (!$map){
   	echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>");
   	return;
}
if (!$tekst){
   	echo ("<p>Du har glemt å skrive en beskjed</p>");
   	return;
}

/*
* Hvis alt er greitt, scriptet er ikke avbrutt gjør dette:
*/
   $sendto = "[email protected]"; // Skriv inn din e-mail.
   $subject = "Utfordring"; // Her velger du tittel.
   // for å få tak i ip bruker vi funksjonen getenv('REMOTE_ADDR')
 $ip = getenv('REMOTE_ADDR');
   $message = "
   Navn: $navn ($epost)
   Tekst: $tekst
 Senders ip: $ip
   ";

  $headers = "Fra: $navn\r\n";
  /*
  * Forsøker å sende epost
  * Forutsetter at man har en smtp-server tilgjengelig
  * Hvis det ikke går så bra - avbryt scriptet og skriv ut en passende feilmelding 
  */
  mail($sendto, $subject, $message, $headers) or die("<p>Det gikk ikke så bra.</p>"); 
  exit;
  // Hvis alt går bra - skriv ut dette: 
  echo ("<p>Meldingen din er sendt.</p>");
}
?>

 

Håper dette kan hjelpe deg.

Endret av CruellaDeVille
Lenke til kommentar
Jeg driver å lager en side for en Counterstrike klan. Jeg trengte et mail-skjema, og jeg gadd ikke lage et fra scratch så jeg brukte et jeg fant her på forumet. Det ser altså sånn ut:

 

 

<form action="<?php "$PHP_SELF" ?>" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn"><br> 
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato"><br> 
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map"><br> 
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25"></textarea><br> 
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!"> 
<input type="reset" class="knapp" value="Slett" name="SLETT"> </p>

</form> 
<?php 
if ($submit) 
{ 
if (!$navn) 
{ 
    echo ("<p>Du har glemt å oppgi navnet ditt</p>"); 
} 
if (!$epost) 
{ 
    echo ("<p>Du har glemt å oppgi epost</p>"); 
} 
if (!$dato)
{
    echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
} 
if (!$map)
{
   echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>")
}   
if (!$tekst) 
{ 
    echo ("<p>Du har glemt å skrive en beskjed</p>"); 
} 
else 
{ 
    $sendto = "[email protected]"; // Skriv inn din e-mail. 
    $subject = "Utfordring"; // Her velger du tittel. 
 $ip=$REMOTE_ADDR;
    $message = " 
    Navn: $navn ($epost) 
    Tekst: $tekst
 
 Senders ip: $ip
 
    "; 
      
   $headers = "Fra: $navn\r\n"; 
     mail($sendto, $subject, $message, $headers); 
     echo ("<p>Meldingen din er sendt.</p>"); 
 } 
} 
?>

 

 

På siden bruker jeg et php-include script, som virker som det skal derfor det er relevant 

Problemet er at når jeg bruker den siste snutten med php-kode (altså selve mailscriptet) så vises ingenting, ikke engang form-elementene. Dersom jeg fjerner php-koden på slutten, vises det som det skal. Jeg har sjekket at php-kode blir parset, så det er ikke ploblemet. Noen som har snøring på hva dette er?

5726325[/snapback]

 

Det første jeg ville gjort var å sette inn denne linjen:

ERROR_REPORTING(E_ALL);

Da vil du se at du har feil i scriptet ditt, noen } som mangler og noen som er feilplassert.

 

Dessuten er det noen logiske feil i scriptet ditt. Du forsøker å si at hvis submitknappe n er trykket så skal den sjekke alle inputfelt. Det er helt fint, men så sier du at hvis inputknappen ikke er trykket (else-biten) så skal man sende en epost.

 

jeg har endret litt på scriptet ditt:

<?php
/* 
* Viser alle feil - fint for debugging, i live-script ville jeg satt 
* denne til (E_NONE) eller loggført feil
*/
error_reporting(E_ALL);

/*
* Trinær operator.
* Sier at hvis feltene er tomme er variabelen lik "" ellers
* verdien som bruker har skrevet inn
*/
$submit = isset($_POST['submit']);
$navn = empty($_POST['navn']) ? "" : $_POST['navn'];
$epost = empty($_POST['epost']) ? "" : $_POST['epost'];
$dato = empty($_POST['dato']) ? "" : $_POST['dato'];
$map = empty($_POST['map']) ? "" : $_POST['map'];
$tekst = empty($_POST['tekst']) ? "" : $_POST['tekst'];

/*
* En enklere måte å skrive ut html på, og i tillegg
* kan du bruke variabelnavn i scriptet, eks $navn, $epost osv
* Må ikke ha whitespace før html-koden
*/
print
<<<HTML
<form action="" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn" value="$navn"><br>
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost" value="$epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato" value="$dato"><br>
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map" value="$map"><br>
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25" value="$tekst"></textarea><br>
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!">
<input type="reset" class="knapp" value="SLETT" name="slett"> </p>
</form>
HTML; /* Avslutter html-koden */

/*
* Hvis submitknappen er trykket - gjør dette:
*/
if ($submit){
/* 
* Sjekker navnefelt
* De andre feltene sjekkes på samme måte
*/
if (!$navn){
   	echo ("<p>Du har glemt å oppgi navnet ditt</p>");
   	// "return" avbryter scriptet
   	return;
}
if (!$epost){
   	echo ("<p>Du har glemt å oppgi epost</p>");
   	return;
}
if (!$dato){
   	echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
   	return;
}
if (!$map){
   	echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>");
   	return;
}
if (!$tekst){
   	echo ("<p>Du har glemt å skrive en beskjed</p>");
   	return;
}

/*
* Hvis alt er greitt, scriptet er ikke avbrutt gjør dette:
*/
   $sendto = "[email protected]"; // Skriv inn din e-mail.
   $subject = "Utfordring"; // Her velger du tittel.
   // for å få tak i ip bruker vi funksjonen getenv('REMOTE_ADDR')
 $ip = getenv('REMOTE_ADDR');
   $message = "
   Navn: $navn ($epost)
   Tekst: $tekst
 Senders ip: $ip
   ";

  $headers = "Fra: $navn\r\n";
  /*
  * Forsøker å sende epost
  * Forutsetter at man har en smtp-server tilgjengelig
  * Hvis det ikke går så bra - avbryt scriptet og skriv ut en passende feilmelding 
  */
  mail($sendto, $subject, $message, $headers) or die("<p>Det gikk ikke så bra.</p>"); 
  exit;
  // Hvis alt går bra - skriv ut dette: 
  echo ("<p>Meldingen din er sendt.</p>");
}
?>

 

Håper dette kan hjelpe deg.

5727189[/snapback]

 

 

Jeg syns dette er så rart! isted funket det, nå ikke...

Sorry:(

 

Jeg har endret litt på koden, fjernet <<<HTML og HTML; for det var der parseren gren sine bitre tårer. Ny versjon finnes på: http://nibbler.no/files/form.php

 

Finner jeg en løsning på <<<HTML skal jeg poste det også

Endret av CruellaDeVille
Lenke til kommentar

<?php
/* 
* Viser alle feil - fint for debugging, i live-script ville jeg satt 
* denne til (E_NONE) eller loggført feil
*/
error_reporting(E_ALL);

/*
* Trinær operator.
* Sier at hvis feltene er tomme er variabelen lik "" ellers
* verdien som bruker har skrevet inn
*/
$submit = isset($_POST['submit']);
$navn = empty($_POST['navn']) ? "" : $_POST['navn'];
$epost = empty($_POST['epost']) ? "" : $_POST['epost'];
$dato = empty($_POST['dato']) ? "" : $_POST['dato'];
$map = empty($_POST['map']) ? "" : $_POST['map'];
$tekst = empty($_POST['tekst']) ? "" : $_POST['tekst'];

/*
* En enklere måte å skrive ut html på, og i tillegg
* kan du bruke variabelnavn i scriptet, eks $navn, $epost osv
* Må ikke ha whitespace før html-koden
* NB: etter <<<HTML må det være linjeskift, IKKE whitespace
*/
print <<<HTML
<form action="" method="post">
<h3>Utfordre oss</h3>
<p>Selv om vi ikke er en klan som sikter mot stjernene så er det altid gøy med litt skikkelig motstand fra andre enn mistenkelige tyske mix-klener
Derfor gir vi deg her muligheten til å utfordre oss til en kamp/pcw. Bare fyll ut skjemaet under !<br><br>
<span class="tekstomr">Navnet på klanen din *</span><input type="text" size="25" maxlength="35" name="navn" value="$navn"><br>
<span class="tekstomr">E-postadressen din *</span><input type="text" size="25" maxlength="35" name="epost" value="$epost"><br>
<span class="tekstomr">Dato og klokkeslett *</span><input type="text" size="25" maxlength="35" name="dato" value="$dato"><br>
<span class="tekstomr">Foretrukket map *</span><input type="text" size="25" maxlength="35" name="map" value="$map"><br>
<span class="tekstomr">Tilleg</span><textarea type="textarea" name="tekst" rows="5" cols="25" value="$tekst"></textarea><br>
felter med * må fylles ut <br />
<input type="submit" class="knapp" name="submit" value="OK!">
<input type="reset" class="knapp" value="SLETT" name="slett"> </p>
</form>
HTML;
/* 
* Avslutter html-koden
* NB INGENTING annet kan stå på denne linjen (HTML;)
*/

/*
* Hvis submitknappen er trykket - gjør dette:
*/
if ($submit){
/* 
* Sjekker navnefelt
* De andre feltene sjekkes på samme måte
*/
if (!$navn){
   	echo ("<p>Du har glemt å oppgi navnet ditt</p>");
   	// "return" avbryter scriptet
   	return;
}
if (!$epost){
   	echo ("<p>Du har glemt å oppgi epost</p>");
   	return;
}
if (!$dato){
   	echo ("<p>Du har glemt å oppgi dato eller klokkeslett</p>");
   	return;
}
if (!$map){
   	echo ("<p>Du har glemt å oppgi hvilket map dere ønsker å spille</p>");
   	return;
}
if (!$tekst){
   	echo ("<p>Du har glemt å skrive en beskjed</p>");
   	return;
}

/*
* Hvis alt er greitt, scriptet er ikke avbrutt gjør dette:
*/
   $sendto = "[email protected]"; // Skriv inn din e-mail.
   $subject = "Utfordring"; // Her velger du tittel.
   // for å få tak i ip bruker vi funksjonen getenv('REMOTE_ADDR')
 $ip = getenv('REMOTE_ADDR');
   $message = "
   Navn: $navn ($epost)
   Tekst: $tekst
 Senders ip: $ip
   ";

  $headers = "Fra: $navn\r\n";
  /*
  * Forsøker å sende epost
  * Forutsetter at man har en smtp-server tilgjengelig
  * Hvis det ikke går så bra - avbryt scriptet og skriv ut en passende feilmelding 
  */
  mail($sendto, $subject, $message, $headers) or die("<p>Det gikk ikke så bra.</p>"); 
  exit;
  // Hvis alt går bra - skriv ut dette: 
  echo ("<p>Meldingen din er sendt.</p>");
}
?>

 

versjon finnes på: http://nibbler.no/files/form.php

Lenke til kommentar

[....]
HTML; /* Avslutter html-koden */
[....]

 

Håper dette kan hjelpe deg.

5727189[/snapback]

 

 

Jeg syns dette er så rart! isted funket det, nå ikke...

Sorry:(

 

Jeg har endret litt på koden, fjernet <<<HTML og HTML; for det var der parseren gren sine bitre tårer. Ny versjon finnes på: http://nibbler.no/files/form.php

 

Finner jeg en løsning på <<<HTML skal jeg poste det også

5727913[/snapback]

 

Kan vel ikke ha noe på linjen der du avslutter parsingen HTML; ikke et mellomrom en gang.

 

btw fint program :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...