Avatar billede denner1989 Nybegynder
23. november 2006 - 17:40 Der er 51 kommentarer og
1 løsning

glemt kode, ny kode via emial

Jeg er igang med at udvikle mit eget brugersystem, og deri har jeg ikke kunne finde noget til at sætte et nyt kodeord automatisk.

Jeg vil regne med det var forholdvis let for jer. :)
Avatar billede udvikler Nybegynder
23. november 2006 - 17:43 #1
Tjaa, det er ikke spor svært ;-)

<?php
        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);
?>

den opretter et kodeord blandet af bogstaver og tal på 8 cifre.. det kan selvfølgelig tilpasses efter behov.
Avatar billede denner1989 Nybegynder
23. november 2006 - 18:04 #2
Det er jo genialt ;) Tak!
Avatar billede denner1989 Nybegynder
23. november 2006 - 18:05 #3
Forresten, hvordan laver man så at tegnene (under opret bruger) skal være på 8 tegn? Jeg prøvede:

    if ($password <= 8) { die('<strong>ERROR</strong>: The password need to be 8 sign or more.'); }
Men virker ikke, undskyld mit dårlige engelsk ;)
Avatar billede udvikler Nybegynder
23. november 2006 - 18:08 #4
Aah, det er fordi php jo først skal tælle dem før den kan tjekke dem med en <=

prøv istedet følgene:

if (strlen($password) < 8) {
    echo "Kodeordet er for kort";
}
Avatar billede denner1989 Nybegynder
23. november 2006 - 18:23 #5
Du kan få flere point i en ny tråd, men tænkte på om du vidste om man kunne samle det her og gøre det mere "sikkert" altså så man ikke bare skrev et brugernavn, men også en mail.

------------------------------------

<?php
        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);
?>
<?php include("top2.php"); ?> <?php include("denner.php"); ?>
<?php

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '".$_POST['brugernavn']."'");
$ip = getenv('REMOTE_ADDR');

$passwd =md5($password);

mysql_query("INSERT INTO `login2` (`passwd`)
VALUES ('$passwd'')") OR DIE (mysql_error());
$id = mysql_insert_id();

mysql_close;
mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");

?>
<?php
echo" Dit password er nu blevet opdateret.<br>
$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
include("logind.php");
?>

-----------------------------------------
Jeg er ret ny til php, så godt være det ser ret skod ud ;) Men jeg skal også have lavet noget felt til den hvor man skriver brugernavn og mail så den bliver tjekket.

Jeg sætter 100 point på højkant, hvis du eller anden kan hjælpe :)
Avatar billede udvikler Nybegynder
23. november 2006 - 18:49 #6
Jo det kan jeg sagtens, men så skal du lige give mig hele din kode, dvs også html delen.
Avatar billede denner1989 Nybegynder
23. november 2006 - 18:55 #7
Det eneste jeg har er det der. Eller hvad er det du tænker på?
Avatar billede udvikler Nybegynder
23. november 2006 - 18:56 #8
Never mind, jeg prøver mig frem :-)

Har en løsning klar om 5-10 minutter
Avatar billede udvikler Nybegynder
23. november 2006 - 19:11 #9
<?php
        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '".$bruger."'");
$ip = getenv('REMOTE_ADDR');
$passwd =md5($password);

if (!mysql_result($query,0)) {
    echo "forkerte oplysninger";
}else{
    mysql_query("INSERT INTO `login2` (`passwd`)
    VALUES ('$passwd'')") OR DIE (mysql_error());
    mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
    echo" Dit password er nu blevet opdateret.<br>
    $home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
}
$id = mysql_insert_id();
mysql_close;
include("logind.php");
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
</form>



-------------------------------------

Jeg fandt følgene ting som jeg ikke forståd, et par af dem kan forekomme hvis du har flere php variabler end dem jeg har set.

1. udefinerede connect oplysninger til mysql - du har ikke definerede variablerne som du bruger til at connecte med
2. i linien $id = mysql_insert_id(); bliver variablen defineret, men overhovedet ikke brugt
3. variablen $home bliver ikke defineret
4. variablen $mail bliver ikke defineret
Avatar billede denner1989 Nybegynder
23. november 2006 - 19:34 #10
Det er fra denner.php ($home)

Den kommer med en fejl:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 8 in /home/virtual/psychokatten.dk/public_html/design/password.php on line 28
forkerte oplysninger

if (!mysql_result($query,0)) {
Avatar billede udvikler Nybegynder
23. november 2006 - 19:43 #11
Prøv:

<?php
        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

#include("top2.php");
#include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '".$bruger."'") Or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd =md5($password);

if (isset($_POST['submit'])) {
    if (!mysql_result($query,0)) {
        echo "forkerte oplysninger";
    }else{
        mysql_query("INSERT INTO `login2` (`passwd`)
        VALUES ('$passwd'')") OR DIE (mysql_error());
        mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
        echo" Dit password er nu blevet opdateret.<br>
        $home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
    }
}
$id = mysql_insert_id();
mysql_close;
#include("logind.php");
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>


---------------------------

Det er dog lidt svært at hjælpe da jeg ikke har de andre filer, så denne fil bliver hurtigt uoverskuelig for mig, men vi prøver da bare :-)
Avatar billede denner1989 Nybegynder
23. november 2006 - 19:53 #12
Denner.php det er mine databse oplysninger. :)

Nu skriver den: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''806e86be5290ad3872435657ccbfbb4c'')' at line 2
Avatar billede udvikler Nybegynder
23. november 2006 - 20:07 #13
Kan jeg få et link til siden? - Det ville hjælpe en del

Prøv følgene indtil da:

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") Or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd =md5($password);

if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (!mysql_result($query,0)) {
            echo "forkerte oplysninger";
        }else{
            mysql_query("INSERT INTO `login2` (`passwd`)
            VALUES ('$passwd'')") OR DIE (mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo" Dit password er nu blevet opdateret.<br>
            $home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}

$id = mysql_insert_id();
include("logind.php");
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:12 #14
www.psychokatten.dk/design/ det er selve siden jeg benytter, og her er det vi er igang med www.psychokatten.dk/design/password.php
Avatar billede udvikler Nybegynder
23. november 2006 - 20:15 #15
ændre linien:

if (!mysql_result($query,0)) {

til:

if (mysql_num_rows($query) == "") {
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:16 #16
<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") Or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd =md5($password);

if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (!mysql_result($query,0)) {
            echo "forkerte oplysninger";
        }else{
            mysql_query("INSERT INTO `login2` (`passwd`)
            VALUES ('$passwd'')") OR DIE (mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo" Dit password er nu blevet opdateret.<br>
            $home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>

---
Jeg har fjernet $id = mysql_insert_id();
include("logind.php");
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:19 #17
Den skriver stadig det samme efter jeg har rettet det.
Avatar billede udvikler Nybegynder
23. november 2006 - 20:24 #18
Jeg får ingen fejl hvis jeg prøver dit link fra før?
Dog kan jeg ikke teste det fuldt ud da jeg ikke har et brugernavn/kodeord, men jeg får da ingen fejl hvis jeg bare prøver at indtaste noget..
Jeg får kun den fejl der SKAL komme - nemlig "forkerte oplysninger"
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:27 #19
Jep men hvis du indtaster noget, kommer den med en fejl :|
Avatar billede udvikler Nybegynder
23. november 2006 - 20:46 #20
Ehm, kan jeg høre hvilken fejl? :P

Husk at beskrive dine fejl nøje, jeg kan jo intet se herfra.

Det er meget svært at arbejde på denne måde, men vi burde da snart have det løst.
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:48 #21
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''c9046b41969e5325515fba71fc421c78'')' at line 2

Ja undskyld, mig der ikke tænker mig om :)
Avatar billede udvikler Nybegynder
23. november 2006 - 20:48 #22
prøv at rette:

$bruger = mysql_real_escape_string($_POST['brugernavn']);

til

$bruger = mysql_real_escape_string(md5($_POST['brugernavn']));
Avatar billede denner1989 Nybegynder
23. november 2006 - 20:52 #23
Nu skriver den kun "forkerte oplysninger" selvom det er de rigtige jeg skriver.
Avatar billede udvikler Nybegynder
23. november 2006 - 20:58 #24
Ah, min fejl kom til at kryptere brugernavnet - må da være i mine egne tanker. Sorry.

prøv dette istedet:

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);

if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (!mysql_result($query,0)) {
            echo "Fejl: Fandt ikke brugeren.";
        }else{
            mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd'')") or die(mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}

$id = mysql_insert_id();
include("logind.php");
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:01 #25
Nu vender jeg tilbage med denne fejl igen: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''1c0c4584f59e2f06ad809921714494d1'')' at line 1
Avatar billede udvikler Nybegynder
23. november 2006 - 21:03 #26
Så må det være en fejl der kommer i en af de filer der bliver includet - ergo dem jeg ikke har adgang til, kan ikke helt finde nogen fejl i det nuværene dokument.. Prøv at poste de 2 første include filer der bliver nævnt i scriptet herind. (Husk lige at slette dine login oplysninger først)
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:07 #27
top2.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<style type="text/css">

A:link, A:visited
{
  text-decoration    : none;
  color                : #555555;
}
A:hover
{
  color                : #BBBBBB;
  text-decoration    : none;
}

</style>
<body>
<font face="verdana" size="1" color="#555555">

----------------------
denner.php:

<?
$host      = "localhost";
$user      = "user";
$pass      = "kode";
$db        = "database";

$copyright  = "Copyright.";
$home      = "PsychoKatten.Dk";

?>

---------------------
Avatar billede udvikler Nybegynder
23. november 2006 - 21:24 #28
Prøv lige denne - den vil ikke virke, det er jeg klar over. Men den skal bruges til at vise mig hvad der går galt.

erstat:

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM test WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);

med

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM test WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);

echo mysql_num_rows($query);
exit;
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:36 #29
er det med vilje der står FROM test?
Avatar billede udvikler Nybegynder
23. november 2006 - 21:38 #30
Ja, det er med vilje.. Den vælger jo fra/from tabellen test

Har du prøvet det sidste jeg sagde? Så jeg lige kan gå ind og se det?
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:40 #31
ellers hvis jeg retter den til login2 (som den skal hedde, ville jeg mene ;D) så skriver den 0
Avatar billede udvikler Nybegynder
23. november 2006 - 21:40 #32
tror denne vil virke.

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM test WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);

echo mysql_num_rows($query);
exit;

if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (mysql_num_rows($query) > 0) {
            mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd'')") or die(mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }else{
            echo "Fejl: Fandt ikke brugeren.";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}

$id = mysql_insert_id();
include("logind.php");
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:40 #33
Table 'psychokatten_dk.test' doesn't exist
Avatar billede udvikler Nybegynder
23. november 2006 - 21:41 #34
Forstår ikke helt hvad du har ændret, men det virker åbenbart som det skal hvis den viser 0

husk lige også at ændre det på den jeg lige har givet dig ^^^
Avatar billede udvikler Nybegynder
23. november 2006 - 21:41 #35
Jep, du skal ændre det til login2
Avatar billede udvikler Nybegynder
23. november 2006 - 21:45 #36
Kan se at du har gjort det nu, nu kan du roligt slette følgene linier også burde det vidst virke :-)

echo mysql_num_rows($query);
exit;
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:46 #37
<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);

echo mysql_num_rows($query);
exit;

if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (mysql_num_rows($query) > 0) {
            mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd'')") or die(mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }else{
            echo "Fejl: Fandt ikke brugeren.";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>

---

Den skriver 0.
Avatar billede udvikler Nybegynder
23. november 2006 - 21:47 #38
Læs det jeg skrev lige før din sidste besked :-)
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:49 #39
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''2578d9da3ffbb07b9b53c8396213998b'')' at line 1

Jeg har slettet de linjer du skrev
Avatar billede udvikler Nybegynder
23. november 2006 - 21:52 #40
tror jeg fandt fejlen, der var en ' for meget..

prøv:

<?php
//include("top2.php");
//include("denner.php");

//$conn = mysql_connect("$host","$user","$pass");
$conn = mysql_connect("localhost","root","");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);


if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (mysql_num_rows($query) > 0) {
            mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd')") or die(mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }else{
            echo "Fejl: Fandt ikke brugeren.";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
23. november 2006 - 21:57 #41
Nu kommer den med en ny fejl: Unknown column 'passwd' in 'field list'
Avatar billede udvikler Nybegynder
23. november 2006 - 21:59 #42
Ja, det er fordi jeg har brugt nogen af koderne som kommentare, det er fordi jeg ellers for titusinder fejl når jeg tester det på min maskine fordi jeg jo ikke har databasen osv.. så laver jeg bare query'sene som kommentare.. du skal bare slette de to paranteser der er foran alle steder.. altså:

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);


if (isset($_POST['submit'])) {
    if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (mysql_num_rows($query) > 0) {
            mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd')") or die(mysql_error());
            mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
            echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
        }else{
            echo "Fejl: Fandt ikke brugeren.";
        }
    }else{
        echo "Du har ikke indtastet brugernavn/mail";
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
23. november 2006 - 22:02 #43
Jeg er ked af det, men den skriver det samme.
Avatar billede udvikler Nybegynder
23. november 2006 - 22:05 #44
Jamen fejlen betyder at du ikke har et felt der hedder passwd i din database, har du ikke det?
Avatar billede denner1989 Nybegynder
23. november 2006 - 22:11 #45
Ops, min fejl ja. Det er fordi jeg troede jeg kunne smide variablen ind $passwd.
Avatar billede udvikler Nybegynder
23. november 2006 - 22:14 #46
Så vidt jeg kan se virker det nu, er det korrekt?
Avatar billede denner1989 Nybegynder
23. november 2006 - 22:15 #47
Den skriver:

Dit password er nu blevet opdateret.
PsychoKatten.Dk har sendt Dig en mail med dit nye password.

Selvom jeg glemmer at skrive emailen. Når jeg så skriver det hele så får jeg en mail om passwordet er ændret, men det er det ikke.
Avatar billede denner1989 Nybegynder
23. november 2006 - 22:17 #48
Hvis mailen også skal passe i mysql, hvordan laver jeg så det i den samme query?
Avatar billede udvikler Nybegynder
23. november 2006 - 22:23 #49
Denne kode tjekker om din mail er ok, men jeg forstår ikke helt hvordan din database er opbygget så jeg kan ikke helt hjælpe dig med at gøre sådan så passwordet faktisk bliver ændret, men jeg kan vise dig hvordan man opdatere et felt i databasen så det gamle indhold bliver slettet og der kommer noget nyt indhold i, så kan du jo selv..

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);


if (isset($_POST['submit'])) {

    if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$", $email)) {
        echo "Ugyldig mail";
    }else{

        if (isset($_POST['brugernavn']) && isset($_POST['mail'])) {
        if (mysql_num_rows($query) > 0) {
                mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd')") or die(mysql_error());
                mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
                echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
            }else{
                echo "Fejl: Fandt ikke brugeren.";
            }
        }else{
            echo "Du har ikke indtastet brugernavn/mail";
        }
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>

---------------

og det med at opdatere et felt kan gøres således:

mysql_query("UPDATE login2 SET `passwd`='$passwd' WHERE brugernavn = '$bruger'") or die(mysql_error());

den overwriter feltet passwd med indholdet af variablen $passwd i den række hvor brugernavnet matcher med $bruger i databasen login2
Avatar billede denner1989 Nybegynder
23. november 2006 - 22:41 #50
Nu fik jeg ændret så password bliver skiftet, men selvom brugernavn er tom skriver den at koden er blevet rettet, hvorfor?

Jeg kunne nemlig godt tænke mig at den tjekkede om brugernavn og mailen passede ind til mysql

MYSQL:
brugernavn = KattenDk
password = 27Pk1Jqa
mail = test
Avatar billede udvikler Nybegynder
24. november 2006 - 14:46 #51
Jeg har taget udgangspunkt i at dit mail felt i mysql databasen hedder `mail` hvis ikke den gør det så skal du lige rette det i query'en

<?php
include("top2.php");
include("denner.php");

$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);

        function password($len = 8) {
          $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ123456789";
          mt_srand( (double) microtime() * 1000000);
          do {
              $out = "";
              for ($i=1; $i <= $len; $i++) {
                  $out .= $chars[mt_rand(0, strlen($chars) - 1)];
            }
          } while (!preg_match("/\d/", $out));
          return $out;
        }

        $password = password(8);

$bruger = mysql_real_escape_string($_POST['brugernavn']);
$email = mysql_real_escape_string($_POST['mail']);
$query = mysql_query("SELECT * FROM login2 WHERE brugernavn = '$bruger' AND mail = '$email'") or die(mysql_error());
$ip = getenv('REMOTE_ADDR');
$passwd = md5($password);


if (isset($_POST['submit'])) {

    if ($_POST['brugernavn'] == "" AND $_POST['mail'] == "") {
    echo "Brugernavn og/eller mail feltet var tomt.";
    }elseif (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$", $email)) {
        echo "Ugyldig mail";
    }else{

                if (mysql_num_rows($query) > 0) {
                    mysql_query("INSERT INTO `login2` (`passwd`) VALUES ('$passwd')") or die(mysql_error());
                    mail("$mail", "Bruger Information", "Heysan!\n\n$home har lavet et ny password til din bruger. \nAdgangskode: $password\n\nDette er en mail afsendt af en bot fra $home. Er dette en fejl kontakt http://www.$home/kontakt/\nfølgene IP Adresse: <a href=\"http://www.ripe.net/perl/whois?searchtext=$ip\">$ip</a> har valgt nyt password.\n\nMed venlig hilsen\n$home.", "From:NoReplay@$home");
                    echo "Dit password er nu blevet opdateret.<br>"."$home har sendt <i>Dig</i> en mail med dit nye password.<br><br>";
                }else{
            echo "Fejl: Brugernavnet og mailen passer ikke sammen i vores database.";
            }
    }
}
?>


<form action="" method="POST">
Brugernavn: <input type="text" name="brugernavn">
Mail: <input type="text" name="mail">
<input type="submit" name="submit" value="Send">
</form>
Avatar billede denner1989 Nybegynder
24. november 2006 - 22:25 #52
Jeg har fået en anden idé.

Jeg gør bare så en bruger kun kan oprette en bruger pr. mail. Så skal jeg bare lige have  hjælp  til at tilføje at den 'tjekker' om mailen allerede er i databasen ligesom med brugernavn:

$query = mysql_query("SELECT brugernavn FROM login2 WHERE brugernavn = '".$_POST['brugernavn']."'");
if(mysql_num_rows($query)==1) { die('<strong>ERROR</strong>: That username are already in the database.'); }
    if ($brugernavn == '') { die ('<strong>ERROR</strong>: Please enter a username.'); }
    if ($mail == '') { die('<strong>ERROR</strong>: Please type your e-mail address.'); }
    if (strlen($password) < 8) { die('<strong>ERROR</strong>: The password need to be 8 sign or more.'); }
    if (strlen($password1) < 8) { die('<strong>ERROR</strong>: The password need to be 8 sign or more.'); }
    if ($password == '') { die('<strong>ERROR</strong>: Please use a password.'); }
    if ($password1 == '') { die('<strong>ERROR</strong>: Please use a password.'); } 
    if ($password != $password1) { die('<strong>ERROR</strong>: Please make the passwords at same.'); }

-----------

Du kan afhente dine point her http://www.eksperten.dk/spm/746768 :)
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

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