Avatar billede TumseMM Nybegynder
02. juli 2011 - 13:16 Der er 8 kommentarer og
1 løsning

Feedback knap

Hej Eksperten.dk

Jeg kunne godt tænke mig en feedback funktion på min hjemmeside. Jeg kan bare ikke få den til at virke. Det kunne være fedt med en halvstor textbox der kom frem på forsiden, hvor man ligesom kunne skrive navn, og ens feedback. Hvorefter man submitter og feedbacken bliver sendt til min e-mail.

Er det rigtigt det jeg har gjort?

Her er feedback-knappen på forsiden:
<a style="display:scroll; position:fixed; bottom:250px; right:5px; " class="feedback" href="feedback1.php" title="Giv os noget respons"> <img src="feedback.jpg"/></a>

Og her er selve feedback textboxen og e-mail scriptet jeg ikke kan få til at virke:

<html>
<?
  function email(form)
if ($_SERVER['REQUEST_METHOD'] == "POST") {
 
$realname = strip_tags($realname); 
$email = strip_tags($email); 
$feedback = strip_tags($feedback); 
 
$sendto = "tumsemm@gmail.com"; 
$subject = "Sending Email Feedback From My Website"; 
$message = "$realname, $email\n\n$feedback"; 
 
mail($sendto, $subject, $message); 


?>

<form method="post" action="Website.php">
<textarea name="comments" cols="40" rows="5">
Giv os noget feedback...
</textarea><br>
<input type="submit" onsubmit="return email(this)"> value="Send" />
</form>
</div>

</html>

Håber virkelig meget på noget hjælp her!
Tak på forhånd TumseMM
Avatar billede Slettet bruger
02. juli 2011 - 22:44 #1
Dét syntes jeg lød som en god lille lørdagsopgave..
- og så svulmede det op : )

Prøv det her: http://itvnu.dk/feedback.html

Og sådan ser mailen ud (ekstra info til evt. fejlfinding):
Sendt fra: http://itvnu.dk/feedback.html
Tidspunkt: Sat Jul 02 2011 22:25:43 GMT+0200 (CET)

Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.04 (lucid) Firefox/3.6.18
Cookies (Enabled):
Vindue: 928 x 586
Skærm: 1680 x 1000
Farver: 24 bit (16777216)

Afsender: Mogens Mig

Ja, godt ser det ud, men virker det ?
ÆØÅ !\"#¤%&/()=*\'



At indsætte på selve siden:
<div style="display:block; position:fixed; bottom:215px; right:0px; z-index:1; background-color:#F00; border:1px dashed #000; color:#FFF; text-align:center; text-decoration:none; font:bold 15px Trebuchet MS; padding:6px; cursor:pointer;"
  title="Giv os noget respons"
  onclick="java script:document.getElementById('feedbackbox').style.display='inline-block'">
  F<br>e<br>e<br>d<br>B<br>a<br>c<br>k
</div>

<div id="feedbackbox"
    style="display:none; position:fixed; bottom:200px; right:0px; z-index:2; background-color:#F00; border:1px dashed #000;padding-right:3px;">
  <iframe name="feedbackform" src="feedbackForm.php" frameborder="0" width="300" height="200"></iframe>
</div>


Og PHP-filen: feedbackForm.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8"></head>
<body style="text-align:center;"><?php
if (isset($_POST['feedback']))
    {
    $side = $_POST['side'];
    $tid = $_POST['tid'];
    $wtf = $_POST['wtf'];
    $navn = $_POST['navn'];
    $feedback = $_POST['feedback'];
 
    $sendto = "tumsemm@gmail.com";
    $subject = "Feedback : )"; 

    $message = "Sendt fra: $side\nTidspunkt: $tid\n\n$wtf\n\nAfsender: $navn\n\n$feedback";
   
    $header = "From: WebsiteFeedback <$sendto>\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8;";
    if (strpos($sendto,"@gmail.com") !== false) $header = str_replace("\r\n","\n",$header); // suk
   
    if (!mail($sendto, $subject, $message, $header))
        {
        $svar = "Øv, fik ikke lov at sende fra server (ikke DIN skyld!)";
        // man kunne evt. gemme i en tekst-fil..
        }
    else
        $svar = "Tak for interessen - Din citronmåne er på vej : )";

    exit("<script>"
        ."window.parent.document.getElementById('feedbackbox').style.display='none';"
        ."alert('$svar');"
        ."window.parent.feedbackform.location='feedbackForm.php'"
        ."</script></body></html>"
        );
    }
?>

<form name="formen" method="post" action="feedbackForm.php">
    <input type="hidden" name="side" value="Mangler ?!?">
    <input type="hidden" name="tid" value="Mangler ?!?">
    <input type="hidden" name="wtf" value="Mangler ?!?">
    <input type="text" name="navn" style="width:280px;margin:0;padding:2px;border:2px inset red;background-color:#FEB;" value="Dit navn - email måske..">
    <br>
    <textarea name="feedback" style="width:280px;height:120px;margin:0;padding:2px;border:2px inset red;background-color:#FEB;resize: none;">Ris/ros/forslag?</textarea>
    <br>
    <input type="submit" value="Send">
    &nbsp;
    <span onclick="window.parent.document.getElementById('feedbackbox').style.display='none';" style="font:bold 12px arial;color:#FFF;cursor:pointer;">Fortryd</span>
</form><script>
    document.formen.side.value = window.parent.location.href
    document.formen.tid.value = new Date().toString()

    var cook = (!navigator.cookieEnabled)?": Disabled":"(enabled): "+top.document.cookie
   
    win = winSize()
    document.formen.wtf.value =
        "Browser: "    + navigator.userAgent + "\n"+
        "Cookies "    + cook + "\n"+
        "Vindue: "    + win.width + " x " + win.height+"\n"+
        "Skærm: "    + screen.availWidth + " x " + screen.availHeight+"\n"+
        "Farver: "    + top.screen.colorDepth + " bit ("+Math.pow(2, top.screen.colorDepth)+")"

function winSize() // forpulede iE
    {
    var winW,winH;
    if (top.document.body && top.document.body.offsetWidth)
        {
        winW = top.document.body.offsetWidth
        winH = top.document.body.offsetHeight
        }
    if (top.document.compatMode=='CSS1Compat' && top.document.documentElement && top.document.documentElement.offsetWidth )
        {
        winW = top.document.documentElement.offsetWidth
        winH = top.document.documentElement.offsetHeight
        }
    if (top.innerWidth && top.innerHeight)
        {
        winW = top.innerWidth
        winH = top.innerHeight
        }
    return {width:winW,height:winH}
    }

</script></body></html>

PS: De steder hvor der står "java script" skal det samles til ét ord, ikk : )
Avatar billede TumseMM Nybegynder
03. juli 2011 - 17:13 #2
Ved ikke hvordan jeg skal takke dig!! Super at du gider hjælpe mig med sådan en stor opgave (vidste jeg ikke engang at det var så indviklet ^^)

M.V.H TumseMM

Ps: Hurtigt ekstra spørgsmål:
Når man har trykket på den røde feedback knap på forsiden, kommer den endnu større røde box frem. Kan man evt. gøre så den slettede "Dit navn - email måske.." og "Ris/ros/forslag?" automatisk når man trykker på det?

Tak på forhånd - du er den bedste!
Avatar billede TumseMM Nybegynder
03. juli 2011 - 18:24 #3
Hej igen T0M.

Nu har jeg prøvet dit script - men det ser ikke ud til at virke. Altså det er et super fedt design af den røde feedback box, men jeg modtager ikke nogen mails når jeg submitter ? Hvad er der galt?

M.V.H
Avatar billede Slettet bruger
03. juli 2011 - 20:03 #4
Jo gu' virker det!

Men det er lidt svært at "regne ud" hvad dit problem er (min astrolog blev kørt over forleden)

Får du overhovedet formen frem, når du prøver ?
Svarer den efter man klikker på Send ?
Hvor ligger det henne ?
Avatar billede TumseMM Nybegynder
03. juli 2011 - 20:30 #5
Altså den røde box på forsiden er der, og der popper også en større én frem når man trykker. Så når man har udfyldt; navn, e-mail, og sit forslag/ris/ros - og trykker send, kommer der så fint en lille textbox op i midten af skærmen hvor der står:
Tak for interessen - Din citronmåne er på vej : )

Men jeg modtager ikke nogen mail med noget?
Jeg har gemt den lille div form på selve siden, og den anden i feedbackForm.php


Hvad er der galt?
Avatar billede Slettet bruger
03. juli 2011 - 21:18 #6
Problemet er fundet!

Min omgåelse af en særhed i gmail, som åbenbart ikke længere er nødvendig.
- Du kan fjerne nedenstående linje i feedbackForm.php:

if (strpos($sendto,"@gmail.com") !== false) $header = str_replace("\r\n","\n",$header); // suk

SÅ virker det, også med gmail som modtager.
Avatar billede Slettet bruger
03. juli 2011 - 22:47 #7
Men der er tilsyneladende et andet lille problem.
- jeg sætter mailens afsender = modtageren (dig selv)

Det accepterer gmail de første 2,3,4 gange, derefter ikke (mail "forsvinder") - meget mærkeligt.

Løsning: brug to forskellige mailadresser (hvis du har..)
Ret denne linje:

$header = "From: WebsiteFeedback <$sendto>\r\nMIME-Version: 1.0\r\nContent-type:

Til f.eks.:

$header = "From: WebsiteFeedback <not@all.dk>\r\nMIME-Version: 1.0\r\nContent-type:

NB: Sæt IKKE noget brugerindtastet (vedkommende's mail f.eks.) ind i stedet - selvom det er fristende. Det vil udgøre et hacker-hul.
- De vil kunne fylde alt muligt snavs ind i headeren så..
Avatar billede TumseMM Nybegynder
04. juli 2011 - 00:22 #8
Jeg kan ikke beskrive hvor stor en hjælp du har været for mig !
Mange tusinde tak for sin indsats i mit spørgsmål!

Håber jeg kan regne med dig, hvis jeg har nogle fremtidige problemer - du har været en suveræn hjælp.

M.v.h. TumseMM
Avatar billede Slettet bruger
04. juli 2011 - 09:55 #9
Velbekommen da.
- Jeg har faktisk lavet det ligeså meget for min egen skyld : )

OG fiflet lidt videre med designet => http://itvnu.dk/feedback.html

HTML'en til inkludering:
<div style="display:block; position:fixed; bottom:215px; right:0px; padding:12px 6px; cursor:pointer; z-index:1;
    background-color:#292; color:#FFF; text-align:center; font:bold 15px Trebuchet MS; line-height:23px;
    border:1px solid #123456; border-right:0px;
    box-shadow:                inset 0 0 6px #123456;
    -moz-box-shadow:        inset 0 0 6px #123456;
    -webkit-box-shadow:        inset 0 0 6px #123456;
    border-radius:            9px 0 0 9px;
    -moz-border-radius:        9px 0 0 9px;
    -webkit-border-radius:    9px 0 0 9px;
    text-shadow: #FF0 0px 0px 4px;
    "
  title="Klik og sig din mening"
  onclick="java script:document.getElementById('feedbackbox').style.display='inline-block'">
  F<br>e<br>e<br>d<br>b<br>a<br>c<br>k
</div>

<div id="feedbackbox"
    style="display:none; position:fixed; bottom:215px; right:0px; padding:0 3px 4px 0; z-index:2;
        background-color:#292; border:1px solid #123456; border-right:0px;
        box-shadow:                inset 0 0 6px #123456;
        -moz-box-shadow:        inset 0 0 6px #123456;
        -webkit-box-shadow:        inset 0 0 6px #123456;
        border-radius:            9px 0 0 9px;
        -moz-border-radius:        9px 0 0 9px;
        -webkit-border-radius:    9px 0 0 9px;
        ">
  <iframe name="feedbackform" src="feedbackForm.php" frameborder="0" width="300" height="200"></iframe>
</div>

Og PHP'en (feedbackForm.php):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8"></head>
<body style="text-align:center;"><?php
if (isset($_POST['feedback']))
    {
    $side = $_POST['side'];
    $tid = $_POST['tid'];
    $wtf = $_POST['wtf'];
    $navn = $_POST['navn'];
    $feedback = $_POST['feedback'];
 
    $sendto = "tumsemm@gmail.com";
    $subject = "Feedback : )";

    $message = "Sendt fra: $side\nTidspunkt: $tid\n\n$wtf\n\nAfsender: $navn\n\n$feedback";

    $header = "From: WebsiteFeedback <not@all.dk>\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8;";

    if (!mail($sendto, $subject, $message, $header))
        {
        $svar = "Øv, fik ikke lov at sende fra server (ikke DIN skyld!)";
        // man kunne evt. gemme i en tekst-fil..
        }
    else
        $svar = "Tak for interessen - Din citronmåne er på vej : )";

    exit("<script>"
        ."window.parent.document.getElementById('feedbackbox').style.display='none';"
        ."alert('$svar');"
        ."window.parent.feedbackform.location='feedbackForm.php'"
        ."</script></body></html>"
        );
    }
?>

<form name="formen" method="post" action="feedbackForm.php">
    <input type="hidden" name="side" value="Mangler ?!?">
    <input type="hidden" name="tid" value="Mangler ?!?">
    <input type="hidden" name="wtf" value="Mangler ?!?">
    <input type="text" name="navn" style="width:280px;margin:0;padding:2px;border:2px inset #292;background-color:#FEB; color:#304;"
            value="Dit navn - email måske.."
            onfocus="if(this.value=='Dit navn - email måske..') this.value=''"
            onblur="if(this.value=='') this.value='Dit navn - email måske..'"
            >
    <br>
    <textarea name="feedback" style="width:280px;height:120px;margin:0;padding:2px;border:2px inset #292;background-color:#FEB;color:#304;overflow:auto;resize:none;"
            onfocus="if (this.value=='Ris/ros/forslag?') this.value=''"
            onblur="if (this.value=='') this.value='Ris/ros/forslag?'"
            >Ris/ros/forslag?</textarea>
    <br>
    <input type="submit" value="Send" style="margin:4px 0 0 0;">
    &nbsp;
    <span onclick="window.parent.document.getElementById('feedbackbox').style.display='none';" style="font:bold 12px arial;color:#FFF;cursor:pointer;">Fortryd</span>
</form><script>
    document.formen.side.value = window.parent.location.href
    document.formen.tid.value = new Date().toString()

    var cook = (!navigator.cookieEnabled)?": Disabled":"(enabled): "+top.document.cookie
   
    win = winSize()
    document.formen.wtf.value =
        "Browser: "    + navigator.userAgent + "\n"+
        "Cookies "    + cook + "\n"+
        "Vindue: "    + win.width + " x " + win.height+"\n"+
        "Skærm: "    + screen.availWidth + " x " + screen.availHeight+"\n"+
        "Farver: "    + top.screen.colorDepth + " bit ("+Math.pow(2, top.screen.colorDepth)+")"

function winSize()
    {
    var winW,winH;
    if (top.document.body && top.document.body.offsetWidth)
        {
        winW = top.document.body.offsetWidth
        winH = top.document.body.offsetHeight
        }
    if (top.document.compatMode=='CSS1Compat' && top.document.documentElement && top.document.documentElement.offsetWidth )
        {
        winW = top.document.documentElement.offsetWidth
        winH = top.document.documentElement.offsetHeight
        }
    if (top.innerWidth && top.innerHeight)
        {
        winW = top.innerWidth
        winH = top.innerHeight
        }
    return {width:winW,height:winH}
    }

</script></body></html>
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