Avatar billede php-nybegynderen Nybegynder
01. marts 2008 - 23:48 Der er 12 kommentarer

Glemt password (mail form)

<table cellpadding="0" cellspacing="0" style="margin:10px;" width="90%">

<?php

if ($_POST['send'] != "" && $_POST['mail'] != "") {

$query = mysql_query("SELECT * FROM members WHERE mail='".$_POST['mail']."'");
$members = mysql_fetch_array($query);

    $bruger = $members['user'];
    $kode = $members['pass'];

    $mail = $members['mail'];
    $subject = "Serious Login";
    $message = "WWW: http://xg-league.dk/serious/ \n\n Username: ".$bruger." \n Password: ".$kode." \n\n Have fun!";

    mail($mail, $subject, $message);

}
?>

<form action="" method="post">

  <tr>
    <td valign="top" colspan="2"><b>Retrieve password</b>

    <table cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td><br></td>
      </tr>
      <tr>
        <td>Mail:</td>
      </tr>
      <tr>
        <td><input type="text" name="mail"></td>
      </tr>
      <tr>
        <td><br></td>
      </tr>
        <tr>
        <td><input type="submit" name="send" value="Send password" style="width:84px;"></td>
      </tr>

    </form>
    </table>

    </td>
  </tr>

<?php
if ($_POST['send'] != "" && $_POST['mail'] != "") {
    echo "<tr><td><br></td></tr><tr><td colspan='2'>Password has been sent!</td></tr>";
}
?>

</table>

--------------------------------------
Jeg kan simpelthen ikke forstå, hvad der er galt. Når jeg har trykket på "Send password", skriver den "Password has been sent!", men der kommer ingen mail.

Er der nogen der kan se fejlen?
Avatar billede yHec Novice
02. marts 2008 - 00:59 #1
Din form mangler en action...
<form action="<?php echo $_SERVER['PHP_SELF']" method="post">

/y
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:08 #2
Du har fat i noget.. Kan godt se, at jeg har glemt den..

Har sat den ind sådan i stedet for at blive på den samme side:
  <tr>
    <td colspan="2">Password has been sent!
    <span style="display:none;"><?=$_SERVER['PHP_SELF'];?></span>
    </td>
  </tr>

- Har også prøvet din måde, men den sender stadig ingen mail! :/
Avatar billede yHec Novice
02. marts 2008 - 01:13 #3
Jamen, du skal da have en action på din form!!!!

Mit forslag, vil submitte formen til den samme side, og dermed udfører dit script!

Måske er det mig der er blind, ellers også er det bare for sent, men jan kan ikke se, hvad din ændring gør!

Prøv hvad jeg foreslog, inden du afviser løsningen!

/y
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:16 #4
Den sender ikke mailen, og desuden sender den mig til forsiden i stedet for at skrive "Password has been sent!".
Avatar billede yHec Novice
02. marts 2008 - 01:19 #5
Dine formdata bliver ikke sendt som det er lavet nu, dvs if(!isset($_POST['send'])) vi ALTID returnerer TRUE, derfor skriver den altid "Password has been sent!"

Også skal du ogaå beskytte din sql-linje, det er for let at lave intrusions...

Du bør mindst have sådan en: addslashes($_POST['mail']) istedet for: $_POST['mail']

/y
Avatar billede yHec Novice
02. marts 2008 - 01:24 #6
Prøv sat sætte HELE det her ind...

Du har glemt al HTML-encoding mm

Har rettet det til, men ikke testet, men det burde virke nu.

<?php
$sent_mail="";
if ($_POST['send'] != "" && $_POST['mail'] != "") {

$query = mysql_query("SELECT * FROM members WHERE mail='".$_POST['mail']."'");
$members = mysql_fetch_array($query);

    $bruger = $members['user'];
    $kode = $members['pass'];

    $mail = $members['mail'];
    $subject = "Serious Login";
    $message = "WWW: http://xg-league.dk/serious/ \n\n Username: ".$bruger." \n Password: ".$kode." \n\n Have fun!";

    mail($mail, $subject, $message);
   
    $sent_mail="<tr><td><br></td></tr><tr><td colspan='2'>Password has been sent!</td></tr>";

}
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<table cellpadding="0" cellspacing="0" style="margin:10px;" width="90%">
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
  <tr>
    <td valign="top" colspan="2"><b>Retrieve password</b>

    <table cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td><br></td>
      </tr>
      <tr>
        <td>Mail:</td>
      </tr>
      <tr>
        <td><input type="text" name="mail"></td>
      </tr>
      <tr>
        <td><br></td>
      </tr>
        <tr>
        <td><input type="submit" name="send" value="Send password" style="width:84px;"></td>
      </tr>

    </form>
    </table>
    </td>
  </tr>
<?php
    echo $sent_mail;
?>
</table>
</body>
</html>

/y
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:26 #7
Så konklusionen på, hvorfor den ikke sender en mail er? :)
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:27 #8
Prøver jeg lige så! ;)
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:32 #9
Det skal siges at det bare er en include fil, så der skal ikke HTML og alt det med, men det virker stadig ikke. Jeg kan egentlig heller ikke forstå hvorfor, men jeg har gjort præcis som du har sagt i begge tilfælde.
Avatar billede smitten1 Nybegynder
02. marts 2008 - 01:36 #10
mail("din egen email", "test", "test");

virker den? så kan du prøve at kigge dine variabler nærmere efter, om de indeholder det forventede
Avatar billede php-nybegynderen Nybegynder
02. marts 2008 - 01:39 #11
Det virker faktisk heller ikke, nej :S
Og det bør det da om ikke andet....
Avatar billede yHec Novice
02. marts 2008 - 09:29 #12
aaargh.... Jeg ser lige, at du ikke henter data fra db... SÅ er det jo lidt svært at få den til at sende....

Fejlen - tror jeg - er her:
$query = mysql_query("SELECT * FROM members WHERE mail='".$_POST['mail']."'");
$members = mysql_fetch_array($query);

Ændres til:
mysql_select_db($database_navn, $[din_connect_string]); //vælger database
$query = "SELECT * FROM members WHERE mail='".$_POST['mail']."'";
$rs_members=mysql_query($query, $[din_connect_string]) or die()); //henter data
$members = mysql_fetch_array($rs_members);

/y
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