Avatar billede horizon Nybegynder
17. juni 2005 - 18:14 Der er 4 kommentarer og
2 løsninger

Sender ikke mail!

Mit glemt password script virker ikke som det skal, det sender ikke brugeren en mail med den nye adgangskode, men den opdaterer adgangskoden i databasen

Nogle forslag?

Her er koden:

<?php // File: $Id: user.php,v 1.3 2003/07/04 07:28:38 larsneo Exp $ $Name:  $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of this file:
// Purpose of this file: mail a new password if forgotten
// ----------------------------------------------------------------------

$ModName = basename( dirname( __FILE__ ) );

modules_get_language();

function lostpassword_user_lostpassscreen()
{
    include 'header.php';
        $host_name = getenv("REMOTE_ADDR");
    OpenTable();
    echo "<font class=\"pn-title\">"._PASSWORDLOST."</font><br><br>\n"
        ."<font class=\"pn-normal\">"._NOPROBLEM." <br />Advarsel! Din ip-adresse ($host_name) bliver gemt!</font><br>\n"

        ."<form action=\"user.php\" method=\"post\">\n"
        ."<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n"
        ."<tr>\n"
        ."<td><font class=\"pn-normal\">Email: </font></td><td><input type=\"text\" name=\"uname\" size=\"60\" maxlength=\"60\"></td></tr>"
        ."<tr><td><font class=\"pn-normal\"></font></td><td><input type=\"hidden\" name=\"email\" size=\"60\" maxlength=\"60\"></td>\n"
        ."</tr>\n"
        ."</table>\n"
        ."<input type=\"hidden\" name=\"op\" value=\"mailpasswd\">\n"
        ."<input type=\"hidden\" name=\"module\" value=\"NS-LostPassword\">\n"
        ."<input type=\"submit\" value=\""._SENDPASSWORD."\">\n"
        ."</form>\n";
    CloseTable();

    include 'footer.php';
}

function lostpassword_user_mailpasswd()
{
    list($uname,
        $email)= pnVarCleanFromInput('uname',
                                    'email');
    list($dbconn) = pnDBGetConn();
    $pntable = pnDBGetTables();

    $sitename = pnConfigGetVar('sitename');
    $system = pnConfigGetVar('system');
    $adminmail = pnConfigGetVar('adminmail');
   
    $column = &$pntable['users_column'];
    $wheres = array();
    if (!empty($email)) {
        $wheres[] = "$column[email] = '".pnVarPrepForStore($email)."'";
        $who = $email;
    }
    if (!empty($uname)) {
        $wheres[] = "$column[uname] = '".pnVarPrepForStore($uname)."'";
        $who = $uname;
    }
    $where = join('AND ', $wheres);
    $result = $dbconn->Execute("SELECT $column[uname],
                                      $column[email],
                                      $column[pass]
                                FROM $pntable[users]
                                WHERE $where");
    if (($dbconn->ErrorNo() != 0) || ($result->numRows() == 0)) {
        include 'header.php';
        OpenTable();
        echo "<center><font class=\"pn-normal\">"._SORRYNOUSERINFO."</center></font>";
        CloseTable();
        include 'footer.php';
    } else {
        $host_name = getenv("REMOTE_ADDR");
        list($uname, $email, $pass) = $result->fields;
        $areyou = substr($pass, 0, 5);
            $newpass=makepass();
            $message = "En bruger på E-guiden.dk har lige bedt om nyt password til din konto. \n\nDit nye password er: $newpass\n\n Du kan logge ind på: ". pnGetBaseURL() . "index.php\n\n";
            $subject = "Nyt password til $uname på E-guiden.dk";
            pnMail($email, $subject, $message, "From: $adminmail\nX-Mailer: PHP/" . phpversion());

        // Next step: add the new password to the database
            $cryptpass = md5($newpass);

            $column = &$pntable['users_column'];
            $query = "UPDATE $pntable[users] SET $column[pass]='".pnVarPrepForStore($cryptpass)."' WHERE $column[uname]='".pnVarPrepForStore($uname)."'";
            $result = $dbconn->Execute($query);

            if($dbconn->ErrorNo()<>0) {
                echo "<font class=\"pn-title\">"._UPDATEFAILED."</font>";
            }
            include 'header.php';

            OpenTable();
            echo "<center><font class=\"pn-title\">"._PASSWORD4." ".pnVarPrepForDisplay($uname)." "._MAILED."</center></font>";
            CloseTable();

            include 'footer.php';
        // If no Code, send it
    }
}
?>
sikkert bare en kommafejl et sted eller noget, men kan ikke finde det.
Avatar billede nielle Nybegynder
17. juni 2005 - 18:59 #1
Prøv at udskrive din email adresse umiddelbart efter at du trækker den ud:

list($uname, $email)= pnVarCleanFromInput('uname', 'email');
echo "DEBUG: " . $email . "<br>";
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();

Den observerede opførelse kunne nemlig godt stemme overens med at $email simpelthen var tom.
Avatar billede horizon Nybegynder
19. juni 2005 - 19:01 #2
$email er tom :S

godt nok noget mystisk noget dette.
Avatar billede horizon Nybegynder
19. juni 2005 - 19:04 #3
Nååh! Det er fordi der slet ikke skal være en variabel af det navn, uname indeholder email adressen da det også er brugernavnet (bør måske lige tage alle ting i betraktning først inden man klager over problemer ... hehe, tak alligevel.)
Avatar billede nielle Nybegynder
20. juni 2005 - 17:10 #4
Jamen, så er det vel tid til at lukke spørgsmålet?

Du bestemmer selv om jeg skal lægge et svar eller om du vil tage dine point tilbage.
Avatar billede horizon Nybegynder
21. juni 2005 - 23:21 #5
Smid et svar, så deler vi.
Avatar billede nielle Nybegynder
22. juni 2005 - 07:12 #6
Svar :^)
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