Formmail med download

Tags:    php

Jeg har en formmail, hvor jeg ønsker at brugeren skal indtaste navn og e-mail adresse og derefter kunne downloade en setup.exe fil.
Jeg har forsøgt mange forskellige ting, men intet er lykkedes, så jeg ville være glad, hvis der er nogen, der kan hjælpe.

I stedet for denne linie i Send.php filen:
echo "Klik på Kør i næste vindue for at installere programmet.";
vil jeg gerne have, en alert (dialogbox) med ovennævnte tekst og ved klik på OK, skal det rigtige program så downloades, noget i retning af:

if $produkt = "Bogsamling"
{
http://www.xxxxx.dk/bogsamling/Setup.exe
}
else
if $produkt = "Musiksamling"
{
http://www.xxxxx.dk/musiksamling/Setup.exe
}
else
.....

INPUT SKER I EN XXX.HTML, SOM HER:

<html>
<head>
<title>Download</title>
</head>

<body>
<form action="send.php" method="POST">
<input type="Hidden" name="produkt" value="Bogsamling">
Produkt<br>
<input type="text" name="produkt" size="39"> *<br>
Navn<br>
<input type="text" name="navn" size="39"> *<br>
E-mail<br>
<input type="text" name="mail" size="39"> *<br>
</p>
<input type="submit" value="Download"></p>
</form>
</body>
</html>

OG DATA HENTES I DENNE SEND.PHP:

<?php
//Henter data fra formular
$navn = $_POST['navn'];
$mail = $_POST['mail'];
$produkt = $_POST['produkt'];

if(empty($navn) || empty($mail) || empty($produkt))

{ //Hvis en af variablerne er tomme, kommer brugeren ikke videre.

echo "Alle felter med * skal udfyldes.";
}
else
{ //Hvis der var noget i alle variabler, går vi videre til næste check.

if(ereg("^.+@.+\\..+$", $mail)) { //Hvis brugerens e-mail er gyldig fortsætter vi.

//Nu skal vi til at sende e-mailen.

$sendto = "mail@rainbow.dk"; //Den adresse som mailen skal sendes til

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen.
$msg = "Navn: ".$navn."\\n\\n";
$msg .= "E-mail: ".$mail."\\n\\n";
$msg .= "Produkt: ".$produkt."\\n\\n";

//Mailen afsendes
if(mail($sendto, $subject, $msg, "From: $mail\\r\\n" . "Reply-To: $mail\\r\\n"))
{

echo "Klik på Kør i næste vindue for at installere programmet.";

}
else
{
echo "Der opstod en fejl. Prøv igen.";

}
}

else
{ //Hvis e-mail adressen ikke har et @ kommer vi med endnu en fejl

echo "Ugyldig e-mail adresse.";

}

}
}
?>



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Ok, prøver at hjælpe dig lidt på vej.

PHP siden:

Den del vi skal koncentere os om er den, som du også selv er inde på, hvor du før havde "Klik for at køre".

Det vi skal have gjordt dér, er at fjerne din echo ""; og tilføje noget som kan udføre en javascript funktion.

I dette tilfælde laver vi en simpel html opbygning med onLoad i body.

Du skal altså fjerne din linie med echo ""; og indsætte dette istedet:

Fold kodeboks ind/udKode 


Du kender forhåbentlig vis denne HTML grund kode.
Ved body er tilknyttet en funktion som hedder onLoad="", den udføre en handling når siden bliver "loadet" altså set.
her udføre vi så vores javascript funktion download().

Vores paramete, altså i dette tilfælde, defineringen på hvad det er brugeren vil downloade skriver vi en PHP variabel ind der.

Koden <?=$variabel?>, <?= og ?> er en indbygget måde at udskrive variabler på, så man er fri for at skulle skrive echo "" osv.

$variabel er så en variabel med stien til den fil brugeren skal hente, fx. $variabel = "download/bog.exe";


Selve Javascript funktionen placere du endten i toppen af siden, eller du kan gøre det inde i din HTML grund kode.

Var det til at forstå?



Indlæg senest redigeret d. 15.03.2007 21:34 af Bruger #9674
så skal du bruge javascript til at tjekke om brugeren acceptere... du kan kigge efter JS alert funktion



Javascripts er hvad du skal bruge som Emil Melgaard skriver.
Men nok ikke alert, men derimod confirm.

Det kan gøres på flere måder, kig lidt på dette eksempel:

Oversigt over de forskellig måder at lave popups med javascript

Du skal nok lave noget i stil med:

Fold kodeboks ind/udKode 

Nok den mest enkle måde at lave det på




Tak for javascriptet. Det fungerer også fint til at lade brugeren downloade en fil. Men jeg har forsøgt at anvende det i min send.php, men jeg ved ikke lige, hvordan jeg skal gøre det - jeg er nybegynder med hensyn til PHP.
Og som jeg skrev, så er der ikke bare tale om en enkelt fil, der er mulighed for at downloade. I bog.html vil $produkt være = Bog og i video.html vil $produkt være = med Video.
Så hvis f.eks. brugeren vælger bog.html hvor $produkt = Bog, så skal filen til download i send.php være http://www........./bog/setup.exe
Men jeg kan altså ikke finde ud af, hvordan jeg laver det.



Ok, lad mig se.

Noget lignende dette kan så laves:

Fold kodeboks ind/udKode 

Som du kan se er scriptet nu en funktion istedet.
Det gør at du nemt kan implementere PHP i den.

Funktionen hedder download() og har en variabel til filnavnet.

Du du så gør er at lave en if sætning som så kalder scriptet med en variabel med stien til filen.
Det kunne f.eks. gøres sådan her:
Fold kodeboks ind/udKode 


Det skulle gerne fungere




Tak for dine koder, men jeg er bange for, at mine PHP færdigheder ikke rækker til at få det til at fungere.
Jeg har ændret echo "Klik.... til din kode OnLoad="download ......
Men hvor placerer jeg: function download(fil).....






Tak til Bjørn for din indsats. Jeg har omsider fået det til at fungere.



Det var så lidt



t