Avatar billede stengaard Praktikant
14. marts 2006 - 14:25 Der er 15 kommentarer og
1 løsning

hvordan for denne til at virke

jeg har et update script i mit community hvor brugeren har mulighed for at ændre sit password men ville meget gerne hve den til at sende en mail til brugeren når man har kliket på opdater i formen og den så henter nedenstående script men det eneste der kommer frem er en hvid skræm. ellers så sriptet således ud da det virkede med update af brugernens password

------ original script ------

<?
// Opdater oplysningerne
if ($_POST["update"]) {
include ("access.php");
$id = $_SESSION['navn'];

mysql_query("UPDATE login SET pass = '" . $_POST["pass"] . "' WHERE user = '" . $id . "'") or die(mysql_error());
echo "<br><br>Dine oplysninger er blevet opdateret";
}
?> 

-------udvidet med mail funktion -----


<?php

// Opdater oplysningerne

if ($_POST["update"]) {
include ("access.php");
$id = $_SESSION['navn'];

mysql_query("UPDATE login SET pass='$_POST[pass]' WHERE user = '".$id."'") or die(mysql_error());

qry  = "SELECT id, email, user, pass, navn FROM login WHERE user = '".$id."'";

  $query = mysql_query($qry) or die(mysql_error());

  while ($row = mysql_fetch_assoc($query)) {

    echo '<h1>'.$row['navn'].'</h1>';
    echo '<b>Brugernavn.: ';
    echo '<b>'.$row['user'].' </b><br>';
    echo '<b>Password.: ';
    echo '<b>'.$row['pass'].' </b><br>';
    echo '<b>Email.: ';
    echo '<b>'.$row['email'].'</b><br><br>';
    }
     
      // skriv mail til bruger!
    $subject = "Dit medlemskab på domain.dk !";
    $message = "Hej $navn, Du ændret dit password på, http://www.domain.dk !
    Vi har nu følgende oplysniger på dig som du skal huske til næste login:
 
    Brugernavn.: $bruger
    Password.: $pass
 
 
 
    Tak for interressen!
 
    Webmaster
 
    This is an automated response, please do not reply!";
    mail($email, $subject, $message,
        "From:  Webmaster<webmaster@domain.dk>\n
        X-Mailer: PHP/" . phpversion());
     
    echo 'Vi har sendt en mail til dig med dine nye login password!';
}
?>
Avatar billede Slettet bruger
14. marts 2006 - 14:34 #1
Ret:
    mail($email, $subject, $message,
        "From:  Webmaster<webmaster@domain.dk>\n
        X-Mailer: PHP/" . phpversion());

til:
    mail($row['email'], $subject, $message,
        "From:  Webmaster<webmaster@domain.dk>\n
        X-Mailer: PHP/" . phpversion());




Hvorfor fetcher du arrayet i en while-løkke?
Avatar billede terrak Nybegynder
14. marts 2006 - 15:03 #2
Til at starte med, så ville jeg nok bygge det op på en lidt anden måde.

Det er ikke sikkert eller rimeligt over for brugerne at opbevare deres kodeord som ren tekst. Opbevar det i stedet for som et hash, eksempelvis md5( http://dk2.php.net/md5 ), med mindre det er ekstremt følsomme data.
Ud over det, burde du også sende et aktiveringslink, så du kan se at brugeren rent faktisk ejer den brugte mail-adresse.

Her er en opremsning af de vigtigste ting:

En tabel hvor du gemmer brugerinformation. Hvis ikke brugerne skal aktiveres via. mail, så lav et tilfældigt password, men opbevar kun hashen i databasen. Eksempel: "insert into `login` (`user`,`pass`,`mail`,`navn`) values ('".mysql_real_escape_string($_POST['user'])."', '".md5($_POST['pass'])."', '".mysql_real_escape_string($_POST['mail'])."', '".mysql_real_escape_string($_POST['navn'])."')"

Det næste du skal bruge er en tabel, til midlertidigt at opbevare information om det nye password. Tabellen bør indholde `id`,`newpass`,`activate`. Når brugeren går ind og beder om et få koden ændret, indsættes en midlertidig post:
"insert into `changepass` (`newpass`,`activate`) values ('".md5($_POST['pass'])."', '".md5($randstring)."')"
$randstring er en tilfældig tekststreng, som laves via. mt_rand og en masse forskellige tegn, symboler og tal i et array.
På sammen side sendes en mail, med følgende link: "http://dinside.dk/aktiver.php?activate=".md5($randstring)
Det kan jo også være at linket slet ikke bliver trykket på, så derfor burde der først være en kommando der tjekker for aktiveringsposter, der er mere end en dag gammel (eller lignende). Det kræver et ekstra felt, eks. `dietime`, som sættes til at være time()+60*60*24. Når `dietime` er lig time(), slettes posten.

aktiver.php updaterer derefter databasen, ved tryk på linket: "update `login`,`changepass` set login.`pass` = changepass.`newpass` where changepass.`activate` = '".mysql_real_escape_string($_POST['activate'])."'"


I eksemplet mangler der selvfølgelig en masse html kode samt tjek for om variablerne er sat, men ellers er det ikke så avanceret når man kender princippet. Det hele er iøvrigt teoretisk, så jeg har ikke testet med præcis denne kode, men noget der ligner.
Avatar billede terrak Nybegynder
14. marts 2006 - 15:22 #3
Jeg glemte selvfølgelig en vigtig ting: `changepass` skal indeholde brugerid'et, for ellers får alle brugere den samme kode, hver gang den ændres :-)

"insert into `changepass` (`userid`,`newpass`,`activate`) values ('".$userid."','".md5($_POST['pass'])."', '".md5($randstring)."')"
$userid inderholder brugerid'et, som forhåbentlig er i $_SESSION['userid'] eller lignende.

"update `login`,`changepass` set login.`pass` = changepass.`newpass` where changepass.`activate` = '".mysql_real_escape_string($_POST['activate'])."' AND login.`id` = changepass.`userid`"
Avatar billede stengaard Praktikant
14. marts 2006 - 15:24 #4
mmm  er det ikke noget du kan lave et eksembel på da gartzen eksembel eller svar heller ikke virker

min table se således ud

CREATE TABLE `login` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(25) NOT NULL default '',
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `member` text NOT NULL,
  `adresse` text NOT NULL,
  `postnr` varchar(4) NOT NULL default '',
  `kommune` text NOT NULL,
  `mobil` varchar(8) NOT NULL default '',
  `foedselsdag` char(2) NOT NULL default '00',
  `aar` varchar(4) NOT NULL default '',
  `maaned` varchar(14) NOT NULL default '',
  `image` varchar(100) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `timestamp` timestamp(14) NOT NULL,
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  `oprettetaf` text NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=34 ;
Avatar billede terrak Nybegynder
14. marts 2006 - 16:10 #5
Jamen hvad er det dog der sker? Jeg trykker Send, men intet af alt det jeg skrev kom med.

Følgende ting skal jeg bruge, før jeg kan lave en færdig løsning:
- Formularen til oprettelse af brugere.
- Scriptet der tjekker om bruger og kodeord passer.
- Formularen hvor brugeren skriver en ny kode.
Avatar billede terrak Nybegynder
14. marts 2006 - 16:28 #6
Anyways, her er nogle mangler jeg fandt i dit script (de >er< rettet):

---

mysql_query("UPDATE login SET pass='".$_POST['pass']."' WHERE user = '".$id."'") or die(mysql_error());

$qry = "SELECT id, email, user, pass, navn FROM login WHERE user = '".$id."'";

---

    echo '<h1>'.$row['navn'].'</h1>';
    echo '<b>Brugernavn.: ';
    echo '<b>'.$row['user'].' </b><br>';
    echo '<b>Password.: ';
    echo '<b>'.$row['pass'].' </b><br>';
    echo '<b>Email.: ';
    echo '<b>'.$row['email'].'</b><br><br>';

^
Du må lige fortælle hvad der skal gøres fed. Er det brugernavnet eller selve ordet "Brugernavn"?

--
Avatar billede stengaard Praktikant
14. marts 2006 - 18:11 #7
som kom resultatet til at se således ud

<?php

// Opdater oplysningerne

if ($_POST["update"]) {
include ("access.php");
$id = $_SESSION['navn'];

mysql_query("UPDATE login SET pass='".$_POST['pass']."' WHERE user = '".$id."'") or die(mysql_error());

$qry = "SELECT id, email, user, pass, navn FROM login WHERE user = '".$id."'";

  $query = mysql_query($qry) or die(mysql_error());

  while ($row = mysql_fetch_assoc($query)) {

echo '<h1>'.$row['navn'].'</h1>';
    echo '<b>Brugernavn.: ';
    echo '<b>'.$row['user'].' </b><br>';
    echo '<b>Password.: ';
    echo '<b>'.$row['pass'].' </b><br>';
    echo '<b>Email.: ';
    echo '<b>'.$row['email'].'</b><br><br>';
    }
   
      // skriv mail til bruger!
    $subject = "Dit medlemskab på domain.dk !";
    $message = "Hej $navn, Du ændret dit password på, http://www.domain.dk !
    Vi har nu følgende oplysniger på dig som du skal huske til næste login:

    Brugernavn.: $bruger
    Password.: $pass



    Tak for interressen!

    Webmaster

    This is an automated response, please do not reply!";
mail($row['email'], $subject, $message,
        "From:  Webmaster<webmaster@domain.dk>\n
        X-Mailer: PHP/" . phpversion());
   
    echo 'Vi har sendt en mail til dig med dine nye login password!';
}
?>
Avatar billede stengaard Praktikant
14. marts 2006 - 18:13 #8
det er bruger navnet $row['navn']der skal være fed som kommer frem når den har opdateret ens profil med et nyt password og derefter sender en mail til brugeren
Avatar billede stengaard Praktikant
14. marts 2006 - 18:16 #9
formularen til oprettelse af bruger

<form action="create1.php" method="post">
 

<table width="100%" height="337" border="0" cellpadding="0" cellspacing="0">

  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Brugernavn:</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="bruger" type="text" size="12" maxlength="50">
      <strong> </strong> </td>
  </tr>
  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password:</font></strong></td>
    <td bgcolor="E3E6D8">
      <input name="pass" type="password"  size="12" maxlength="20"></td>
  </tr>
  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Fuldenavn</strong>: </font></strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="navn" type="text" size="12" maxlength="50"></td>
    <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Adresse:</font></strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="adresse" type="text" size="12" maxlength="50">      </td>
    <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">By:</font></strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="kommune" type="text" size="12" maxlength="50">
    </td>
    <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Postnr:</font><br>
    </strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="postnr" type="text" size="12" maxlength="4">
    </td>
    <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Fødselsdag Dato:</font><br>
    </strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
   
        <select NAME="foedselsdag" onChange="msg(this.form)" size="1">
<option value="-- Vælg --">-- Vælg --</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>

</select>
    </td>
      <tr>
      <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">M&aring;ned </font></strong></td>
      <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <select NAME="maaned" onChange="msg(this.form)" size="1">
<option value="-- Vælg --">-- Vælg --</option>
<option value="Januar">Januar</option>
<option value="Februar">Februar</option>
<option value="Marts">Marts</option>
<option value="April">April</option>
<option value="Maj">Maj</option>
<option value="Juni">Juni</option>
<option value="Juli">Juli</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="Oktober">Oktober</option>
<option value="November">November</option>
<option value="December">December</option>

</select></td>

    <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&Aring;r:</font><br>
    </strong></td>
    <td bgcolor="E3E6D8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font>
      <input name="aar" type="text" size="12" maxlength="4">
    </td>
  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font> </strong></td>
    <td bgcolor="E3E6D8"><input name="email" type="text" size="12" maxlength="50"></td>
  </tr>
  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Mobil nummer:</font> </strong></td>
    <td bgcolor="E3E6D8"><input name="mobil" type="text" size="12" maxlength="8"></td>
  </tr>
  <tr>
    <td bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Medlemstype:</font> </strong></td>
    <td bgcolor="E3E6D8"> <select NAME="member" onChange="msg(this.form)" size="1">
<option value="-- Vælg --">-- Vælg --</option>
<option value="Ven">Ven</option>
<option value="Familiemedlem">Familiemedlem</option>

</select></td>
  </tr>

    <tr>
      <td height="32" bgcolor="E3E6D8"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Dit  Navn:</font> (
        <strong> Kan ikke &aelig;ndres </strong>) </strong></td>
    <td bgcolor="E3E6D8"><input name="oprettetaf" bgcolor="#FF0000" type="text" value="<?= $_SESSION['navn']; ?>
    " size="12" readonly="true" /></td>
  </tr><tr>
    <td bgcolor="E3E6D8"><input name="opret" type="submit" value="Opret"><input name="reset" type="reset" value="Slet"></td>
    <td bgcolor="E3E6D8"></td>
  </tr>
</table>
             
                </form>
Avatar billede stengaard Praktikant
14. marts 2006 - 18:17 #10
Scriptet der tjekker om bruger og kodeord passer.

<?php
session_start();




if ($_POST['bruger'] == "" AND $_POST['pass'] == "") {
        $_SESSION['status'] = "nobrugerpass";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

elseif ($_POST['bruger'] == "") {
       
        $_SESSION['status'] = "nobruger";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

elseif ($_POST['pass'] == "") {
       
        $_SESSION['status'] = "nopass";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

else

{
include("access.php");
$query = "SELECT user, pass FROM login WHERE user = '".$_POST['bruger']."' AND pass= '".$_POST['pass']."'";
$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);

if ($_POST['bruger'] == $log['user'] && $_POST['pass'] == $log['pass']) {
   
        $_SESSION['status'] = "login";
        $_SESSION['navn'] = $_POST['bruger'];
    print("    <script language='javascript'>
        location.href='index.php';
        </script>");
       
}

else
{
        $_SESSION['status'] = "fejl";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
       
}
}
?>
Avatar billede stengaard Praktikant
14. marts 2006 - 18:18 #11
Formularen hvor brugeren skriver en ny kode.

<form action="changeaccountparse.php" method="post">
<input type="hidden" name="id" value="$id">
<div class="frmobj">
Brugernavn:</div> <?php
  include('access.php');
$id = $_SESSION['navn'];

$qry = "SELECT id, email, user, pass, navn, image, mobil, adresse, postnr, maaned, aar, kommune, member, foedselsdag FROM login WHERE user = '".$id."'";
  $query = mysql_query($qry) or die(mysql_error());

  while ($row = mysql_fetch_assoc($query)) {

    echo '<b>'.$row['user'].'</b><br>';}
?>
<div class="frmobj">
Gammelt Password:</div> <?php
  include('access.php');
$id = $_SESSION['navn'];

$qry = "SELECT id, email, user, pass, navn, image, mobil, adresse, postnr, maaned, aar, kommune, member, foedselsdag FROM login WHERE user = '".$id."'";
  $query = mysql_query($qry) or die(mysql_error());

  while ($row = mysql_fetch_assoc($query)) {

    echo '<b>'.$row['pass'].'</b><br>';}
?><br />
<div class="frmobj">Nyt Password: </div><input type="password" name="pass" value="<? echo "$pass"; ?>" style="width: 152px"><br />

<br />
<input type="submit" value="Updater Profil" name="update"> <input type= "button"  value="Tilbage"  onclick="history.back()" style="cursor:pointer;"> </form>
Avatar billede terrak Nybegynder
14. marts 2006 - 18:30 #12
Hov, jeg kom til at skrive formularen, men jeg mente scriptet hvor brugeren oprettes.

Dog har jeg desværre ikke tid til at lave det i dag.
Avatar billede stengaard Praktikant
14. marts 2006 - 18:34 #13
det er ok

men her er scriptet der opretter brugeren

<?
             

$bruger = $_POST['bruger'];
$pass = $_POST['pass'];
$navn = $_POST['navn'];
$adresse = $_POST['adresse'];
$member = $_POST['member'];
$kommune = $_POST['kommune'];
$postnr = $_POST['postnr'];
$mobil = $_POST['mobil'];
$fødselsdag = $_POST['foedselsdag'];
$maaned = $_POST['maaned'];
$aar = $_POST['aar'];
$email = $_POST['email'];
$oprettetaf = $_POST['oprettetaf'];
$message = "En ny bruger er blevet oprettet på familien-stengaard.dk  med følgende oplysninger!\nNavn: ".$navn."\nEmail: ".$email."\nBrugernavn: "\.$bruger."\nMedlemskab: "\.$member."\nOprettet af: ".$oprettetaf."\n";
mail('webmaster@familien-stengaard.dk ', 'En bruger er blevet oprettet på familien-stengaard.dk', $message);
include("access.php");
$query = "SELECT id, user, pass, navn, email FROM login WHERE user = '".$bruger."'";
$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$test = mysql_fetch_array($result);

if (isset($test['user'])) {
print("    <font face='verdana' size='2' color='#ff0000'>
        <b>Brugernavnet \"$bruger\" er allerede optaget
        v&aelig;lg venligst et nyt </b></font><br><br>
        <font face='verdana' size='2' color='#000000' text-decoration='none'>
        <a href='create.php'>Tilbage</a></font>");
}
else
{
$sql = "INSERT INTO login (id, user, pass, navn, foedselsdag, aar, maaned, adresse, postnr, kommune, mobil, email, member, oprettetaf, tid) VALUES ('', '$bruger', '$pass', '$navn', '$foedselsdag', '$aar', '$maaned','$adresse', '$postnr', '$kommune', '$mobil', '$email', '$member', '$oprettetaf' ,now())";
mysql_query($sql);
print("    <font face='verdana' size='2' color='##963a3a'>Du har nu oprettet din ven eller veninde med følgende oplysninger:<br><br>
        <b>Bruger: $bruger <br>
        Password: $pass <br>
        Navn: $navn <br>
        Email: $email <br>
        Fødselsdag: $fødselsdag $maaned $aar<br><br>
        Tilbage til startsiden klik <a href='index.php'>Her</b></a></font><br><br>");
       
      // skriv mail til bruger!
    $subject = "Dit medlemskab på familien-stengaard.dk !";
    $message = "Hej $navn, Du er blevet oprettet som medlem på, http://www.familien-stengaard.dk !
    Du blev oprettet med følgende informationer af $oprettetaf:
   
    Brugernavn.: $bruger
    Password.: $pass
    Medlemskab.: $member
    Fødselsdag.: $fødselsdag $maaned $aar
   
   
   
    Tak for interressen!
   
    Webmaster
   
    This is an automated response, please do not reply!";
    mail($email, $subject, $message,
        "From:  Webmaster<webmaster@familien-stengaard.dk>\n
        X-Mailer: PHP/" . phpversion());
       
    echo 'Der er blevet sendt en mail til den nye bruger du har oprettet!';
}
?>
Avatar billede terrak Nybegynder
16. marts 2006 - 16:49 #14
Jeg kan ikke se at jeg kan få tid før lørdag. Det kan være der er andre der har et bud.
Avatar billede stengaard Praktikant
16. marts 2006 - 20:40 #15
det er ok

vi lader den stå lidt i nu
Avatar billede stengaard Praktikant
21. april 2006 - 22:18 #16
lukket
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