Avatar billede heavybreezer Nybegynder
15. juli 2004 - 12:56 Der er 14 kommentarer og
1 løsning

Form submitter selvom det ikke skal

Jeg har et underligt problem med mine forms. Jeg har en php side, hvor jeg har 2 sider included med forms i begge. Og når jeg submitter den ene, bliver den anden også submittet, men den submitter et tomt felt?

Min kode ser sådan ud:


<?

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

$modtager = "min@mail.dk";
$sendt = "Beskeden er sendt!!";

$emne = $_POST['emne'];
$besked = $_POST['besked'];

$email = $_POST['email'];

mail("$modtager", "$emne", "$besked", "From: ($email);");
echo "<font face='Verdana' size='2'>$sendt</font>";
}

?>






<?
if(isset($_POST['send'])){

$ip = getenv("REMOTE_ADDR");

$shout = $_POST["shout"];
$query = mysql_query("UPDATE shoutbox SET text='$shout', ip='$ip' WHERE id='1'") or print mysql_error();
echo '';
}

?>

Og som sagt ligger de jo på samme side, da jeg bruger include..
Avatar billede googolplex Novice
15. juli 2004 - 13:00 #1
Hvis de ligger på samme side, bliver begge variable (action & send) jo sat, derfor.
Avatar billede googolplex Novice
15. juli 2004 - 13:02 #2
Du kan jo tjekke om variablen også er tom, så burde det virke:

if(isset($_POST['var']) && $_POST[''] != '')
Avatar billede heavybreezer Nybegynder
15. juli 2004 - 13:07 #3
ok :)
jeg ved at variablen ikke er tom..
så hvordan fikser jeg det problem med at begge variabler er sat?
Avatar billede googolplex Novice
15. juli 2004 - 13:12 #4
Der skal være et eller andet som du kan tjekke på, udover om variablen er sat. Fx. et tomt felt, en checkbox eller lignende. Hvis 'emne' fx. ikke er fyldt ud, så skal du jo ikke køre den del af scriptet der mail()er. Men det er generelt min erfaring, at det er bedst ikke at have mere end én formular på den samme side, pga. denne slags finurligheder :)

Det kan være der er en anden løsning, men så kender jeg den ikke :(
Avatar billede erikjacobsen Ekspert
15. juli 2004 - 13:12 #5
Du har sikkert glemt en </form>
Avatar billede googolplex Novice
15. juli 2004 - 13:13 #6
Men VIL du gerne have at begge forms bliver submittet samtidig ?
Avatar billede heavybreezer Nybegynder
15. juli 2004 - 13:15 #7
googolplex >> ok så skal jeg lave noget som siger hvis tekstfeltet er tomt så ingenting, else min funktion?

erikjacobsen >> Nej, jeg har ikke glemt en </form> ;)
Avatar billede heavybreezer Nybegynder
15. juli 2004 - 13:15 #8
nej, jeg vil ikke have de bliver submittet samtidig
Avatar billede erikjacobsen Ekspert
15. juli 2004 - 13:17 #9
Så vil jeg da gerne se din kode.
Avatar billede googolplex Novice
15. juli 2004 - 13:19 #10
Ja, det ville jeg gøre, men du behøver ingen else:

if(isset($_POST['action']) && $_POST['emne'] != '')
{
  mail();
{
Avatar billede heavybreezer Nybegynder
15. juli 2004 - 13:20 #11
Jep, der var den! Tak :)
Læg svar..
Avatar billede googolplex Novice
15. juli 2004 - 13:23 #12
Eller således:

if(isset($_POST['action']))
{
    if($_POST['emne'] != '' && $_POST['besked'] != '')
    {
        mail();
    }
    else
    {
        echo 'Husk at udfylde emne og besked!';
    }
}

Så tjekker den om den er 'action' er sat, derefter om variablerne er tomme.
Avatar billede googolplex Novice
15. juli 2004 - 13:23 #13
:)
Avatar billede googolplex Novice
15. juli 2004 - 13:24 #14
Men du bør ALTID tjekke ALLE de informationer du modtager via formularer, ellers kan brugerne jo smide hvad som helst i din database :)
Avatar billede heavybreezer Nybegynder
15. juli 2004 - 13:36 #15
Jep, det ved jeg.... har osse sikret mig at brugerne ikke kan skrive tags.... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester