Avatar billede JJ77 Juniormester
05. januar 2008 - 11:25 Der er 18 kommentarer og
1 løsning

Lidt modificeret Tip en Ven script

Hej Eksperter

Er her nogen som kender et godt tip en ven script som kan;

Anbefale en hjemmeside
Inkludere anbefalers navn og email i beskeden
Gemme navn og email på den der anbefaler, enten i en fil eller database.
Avatar billede jakobdo Ekspert
05. januar 2008 - 17:45 #1
Hej Jacob, det er jo nok nemmest at kode det fra bunden af, så det passer til din side og samtidig trækker de korrekte data ud.
Avatar billede JJ77 Juniormester
05. januar 2008 - 18:44 #2
Hmm.. Ja du har jo garanteret ret... men også en lidt mere kompliceret løsning ;-)

Det eneste det skal kunne er følgende;
Anbefale en hjemmeside til en ven
Inkludere anbefalers navn og email i beskeden til vennen
Gemme navn og email på den der anbefaler samt anbefaledes navn og email, enten i en fil eller database..
Avatar billede jakobdo Ekspert
05. januar 2008 - 19:08 #3
I bund og grund er det jo blot en form med email og tryk SEND. :o)
Avatar billede JJ77 Juniormester
05. januar 2008 - 19:26 #4
Jaaa.. :-) kan vi komme det lidt nærmere :-)
Avatar billede jakobdo Ekspert
05. januar 2008 - 20:18 #5
<form action="tipenven.php" method="post">
<input type="hidden" name="side" value="<?=$_SERVER['HOST'];?>" />
Vens email: <input type="text" name="vens_email" /><br />
<input type="submit" value="Tip En ven" name="tip" />
</form>

tipenven.php skal så indeholde:
en mail() funktion som sender diverse ting, samt email og navn på afsender.
Det har du vel så i en session eller også skal formen også indeholder afsender email og afsender navn.
Avatar billede JJ77 Juniormester
07. januar 2008 - 16:54 #6
Her er et tip en ven script som umiddelbart virker fint. Eller det gjorde det ihvertfald de første gange jeg prøvede det. Hva fann kan være gået galt? er det serveren som pludselig har blokket adgangen oder wass.

Har det fx noget med følgende at gøre;
Hvis du ønsker at sende e-mails fra din web-side via et script kan dette naturligvis godt lade sig gøre. Her skal du bruge vores interne smtp-serveradresse: mailout.one.com.


<?PHP
//anbefal-side script
IF (isset($_POST['afsend'])) {

    $fraNavn=$_POST['fraNavn'];
    $tilNavn=$_POST['tilNavn'];
    $mailFra=$_POST['mailFra'];
    $mailTil=$_POST['mailTil'];
   
        $subject = "Tip om hjemmeside";
        $besked = "Hej $tilNavn\n\nTjek lige denne hjemmeside: http://www.hjemmeside.dk\n\nTekst kommer her.\n\nVenlig hilsen\n\n$fraNavn\n\n\n\n\n\n(Denne e-mail er sendt via hjemmesiden)";
        $headers = "From: $fraNavn<$mailFra>\nReply-to: $fraNavn<$mailFra>";

        mail("$mailTil", "$subject", "$besked", "$headers");
        $mess = "Tippet er sendt!";
//    }
}

?>
<!--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">-->
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="../style.css">
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<SCRIPT LANGUAGE="JavaScript">
/* validering af formular */
<!-- Begin
function checkEmail(myForm) {
    if ((myForm.mailFra.value == "")||(myForm.mailTil.value == "")||(myForm.fraNavn.value == "")||(myForm.tilNavn.value == "") ) {
        alert("Hovsa!\nAlle felter skal udfyldes!");
        return(false);
    }
    if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.mailTil.value)){
        alert("UPS!\nVens e-mail addresse er altså ikke korrekt!");
        return(false);
    }
    if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.mailFra.value)){
        alert("Hov!\nDin e-mail addresse er ikke korrekt!");
        return(false);
    }
    else{
        return(true);
    }
}
//  End -->
</SCRIPT>

<STYLE TYPE="text/css">
    BODY, TD {
        color : #000000;
        font-family : Arial, Helvetica, sans-serif;
        font-size : 12px;
    }
    .submit {
        font-size : 12px;
    }
    DIV.overskr  {
        font-size : 12px;
        font-weight : bold;
        letter-spacing : 1px;
        color : #000000;
        text-align : center;
        font-family : Arial, Helvetica, sans-serif;
    }

    DIV.mess  {
        font-size : 12px;
        line-height : 20px;
    }
    .border  {
        border-width : 1px;
        border-style : solid;
        border-color : #ffffff;
    }
</STYLE>
    <TITLE>Tip en ven</TITLE>
</HEAD>

<BODY onLoad="document.anbefal.tilNavn.focus()" BGCOLOR="#ffffff">
<!-- webformular -->

<table width="519" border="0" cellspacing="2" cellpadding="0">
<h1>Spred budskabet</h1>
            <tr>
                <td>
                    <p>Tekst kommer her.</p>
                    <ul>
                    </td></table>
            </tr>
<DIV CLASS="border">
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="left">
<TR><TD HEIGHT="32" COLSPAN="4"><DIV CLASS="overskr">Tip en ven</DIV></TD></TR>
<FORM ACTION="<? ECHO $_SERVER['PHP_SELF']; ?>" METHOD="post" NAME="anbefal" onSubmit="return checkEmail(this)">
<TR><TD WIDTH="80" HEIGHT="30">Vens navn: </TD>
                        <TD><INPUT TYPE="text" NAME="tilNavn" SIZE="30" TITLE="Skriv navnet på din ven her"></TD>
                    </TR>
<TR><TD WIDTH="80" HEIGHT="30">Vens E-mail: </TD>
                        <TD><INPUT TYPE="text" NAME="mailTil" SIZE="30" TITLE="Skriv e-mail-adressen på din ven her"></TD>
                    </TR>
<TR><TD WIDTH="80" HEIGHT="30">Dit navn:</TD>
                        <TD><INPUT TYPE="text" NAME="fraNavn" SIZE="30" TITLE="Skriv dit navn her"></TD>
                    </TR>
<TR><TD WIDTH="80" HEIGHT="30">Din e-mail: </TD>
                        <TD><INPUT TYPE="text" NAME="mailFra" SIZE="30" TITLE="Skriv din e-mail-adresse her"></TD>
                    </TR>
<TR><TD ALIGN="center" WIDTH="80" HEIGHT="36"><INPUT TYPE="submit" NAME="afsend" VALUE=" - Send - " CLASS="submit" TITLE="Klik her for at sende anbefaling"></TD>
                       
                    </TR>
</FORM>
</TABLE>
</DIV>
<?PHP
ECHO "<DIV ALIGN=\"center\" CLASS=\"mess\">$mess</DIV>";
?>
</BODY>
</HTML>
Avatar billede JJ77 Juniormester
07. januar 2008 - 17:07 #7
Lige en tilføjelse.. prøvede at køre scriptet fra en anden webserver hos one.com og der virkede det igen. Så det lader åbenbart at der er begrænsede antal mailudsendelser.
Avatar billede jakobdo Ekspert
07. januar 2008 - 20:32 #8
one.com kører med noget spam tjek, så det skal være dit domæne som er afsender af emailen.
Hvis ikke, så bliver emails efter X antal forsøg forsinket med vilje.
Avatar billede JJ77 Juniormester
07. januar 2008 - 22:10 #9
ok... det var da noget..

Vil det sige at jeg ikke har et problem mere hvis jeg ændrer nedenstående;

$headers = "From: $fraNavn<$mailFra>\nReply-to: $fraNavn<$mailFra>";

Til; $headers = "From: $fraNavn<robot@MIT_DOMÆNE.dk>\nReply-to: $fraNavn<$mailFra>";

Har godt nok forsøgt det uden held, men måske serveren har givet mig en form for karentæne nogle timer. Har nemlig prøvet det på min andet webhotel hos b-one hvor der funker fint.
Avatar billede JJ77 Juniormester
08. januar 2008 - 16:24 #10
Nå, men nu virker det fint igen...

Men er det muligt at gemme navn og email på den der anbefaler samt anbefaledes navn og email, i en fil, efterfulgt af linieskift?

Det er til konkurrencebrug.
Avatar billede JJ77 Juniormester
08. januar 2008 - 18:39 #11
Ved ikke om følgende kode kan bruges, men fik det da til at skrive til en fil. Ved bare ikke hvordan det skal sættes sammen, samt hvordan jeg slipper for at den sletter alt indholdet i filen tips.txt hver gang;

<?php
require_once("../inc/config.php");

$filename = 'tips.txt';

$data = $_GET['fraNavn'];

if (is_writable($filename)) {

  if (!$handle = fopen($filename, 'w')) {
        echo "Kan ikke åbne filen ($filename)";
        exit;
  }

  if (fwrite($handle, $data) === FALSE) {
      echo "Kan ikke skrive til ($filename)";
      exit;
  }

  echo "Success, skrev ($data) i filen ($filename)";

  fclose($handle);

} else {
  echo "Filen $filename er ikke skrivbar";
}
?>



NEDENSTÅENDE ER PHP-KODEN HVOR OVENSTÅENDE (ell. lign.) GERNE SKULLE INDSÆTTES

<?PHP
//anbefal-side script
IF (isset($_POST['afsend'])) {

    $fraNavn=$_POST['fraNavn'];
    $tilNavn=$_POST['tilNavn'];
    $mailFra=$_POST['mailFra'];
    $mailTil=$_POST['mailTil'];
   
        $subject = "Tip om hjemmeside";
        $besked = "Hej $tilNavn\n\nTjek lige denne hjemmeside: http://www.hjemmeside.dk\n\nTekst kommer her.\n\nVenlig hilsen\n\n$fraNavn\n\n\n\n\n\n(Denne e-mail er sendt via hjemmesiden)";
        $headers = "From: $fraNavn<$mailFra>\nReply-to: $fraNavn<$mailFra>";

        mail("$mailTil", "$subject", "$besked", "$headers");
        $mess = "Tippet er sendt!";
//    }
}

?>
Avatar billede jakobdo Ekspert
08. januar 2008 - 22:03 #12
Ville det ikke være bedre at gemme i Database?
Avatar billede JJ77 Juniormester
08. januar 2008 - 23:01 #13
Tænker bare at det ikke er nødvendigt.. det skal kun køres midlertidigt til konkurrencebrug, og derefter skal jeg nemlig ikke gemme informationer om dem som tipper...
Avatar billede jakobdo Ekspert
09. januar 2008 - 06:41 #14
DB vil stadig være nemmere.
Avatar billede JJ77 Juniormester
09. januar 2008 - 20:42 #15
ok.. så gemmer vi da bare i db, så.. :-)

Nogle forslag ;-)
Avatar billede jakobdo Ekspert
09. januar 2008 - 20:44 #16
Du kan jo "bare" kalde: INSERT INTO tabel_navn VALUES('$fraNavn', '$tilNavn', '$mailFra', '$mailTil') lige inden du kalder mail().
Avatar billede JJ77 Juniormester
09. januar 2008 - 23:31 #17
Hmmm.. så virker det sku.. der må være noget galt.. Men smider du ikke et svar :-) og takker.

mysql_query ("INSERT INTO tipEnVen (id, fraNavn, tilNavn, mailFra, mailTil)
    VALUES ('','$fraNavn', '$tilNavn', '$mailFra', '$mailTil')");
Avatar billede jakobdo Ekspert
10. januar 2008 - 17:59 #18
Svar!
Avatar billede jakobdo Ekspert
16. januar 2008 - 19:36 #19
Takker for point.
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