/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Glemt password script
Fra : petermadsen81
Vist : 442 gange
120 point
Dato : 07-12-03 17:39

Jeg har prøvet mig frem med mit første eget hjemmelavet script... Det virker selvfølgelig ikke... På den første side glemt.php indtaster man sin mail
På den næste side glemt_ok.php skulle den jo gerne sende en mail til den mail adresse hvis den findes i "navnbase" Scriptet kan fint finde ud at afvise ikke eksisterende mailadresser og at sende mail til en eksisterende mailadresse.

Problemet er bare at den ikke udfylder felterne brugernavn og password i mailen?
Er der nogen der kan finde fejlen?

glemt.php
<body bgcolor="#C0C0C0">
<form action="glemt_ok.php" method="post">
Din mailadresse: <input type="text" name="mail"><br>
<input type="submit" name="Send mit Password" value="Send mit Password"></form>


glemt_ok.php
<body bgcolor="#C0C0C0">
<?
include("cont.php");

$result = mysql_query("select brugernavn, mail, password from navnbase where mail = '$mail'") or die (mysql_error());
$number = mysql_num_rows($result);
if ($number > 0) {
mail("$mail","Ditpassword til 3103.dk","
Hej $brugernavn

Her er dit Login og Password til adresser på 3103.dk

Brugernavn: $brugernavn
Password: $password

Mvh Peter","from: peter@3103.dk");
print "Dine oplysninger er sendt til: $mail";
} else {
print "Din Email er desvære ikke registreret her...";
}
?>

 
 
Kommentar
Fra : JensT


Dato : 07-12-03 20:02

Det ser ud til at Paul Kruyt ikke længere kører på med phpSecurePages...
Måske skulle du kigge efter et andet login-system
http://freshmeat.net/projects/phpsecurepages/?topic_id=87%2C92%2C250%2C243%2C129

Derudover.. jeg tror at du skal have variablerne indsat i body teksten, før du laver mail(...)
lav $sub og $bod først
Således at du har:
mail("$mail",$subj,$bod)

Kommentar
Fra : JensT


Dato : 07-12-03 20:05

Du kan også lige checke at du har alt kørende, således at du kan vise $login * og $password på skærmen

*) $login er vist det rigtige navn for brugernavn, er det ikke?
http://www.phpsecurepages.com/faq.html#Q9

Kommentar
Fra : petermadsen81


Dato : 07-12-03 20:16

Jeg kan forstå du har været inde på min side og kigge Det er ikke i billed upload man skal kunne få tilsendt sit brugernavn... det er ved adresser og der bruger jeg ikke phpsecurepages...

lav $sub og $bod først
Således at du har:
mail("$mail",$subj,$bod)

Jeg er desværre ikke så meget inde det endnu så det der bliver du nød til at skære ud i pap og ja... jeg har ønsket mig en php/mysql bog i julegave...

Kommentar
Fra : petermadsen81


Dato : 07-12-03 20:21

Du kan også lige checke at du har alt kørende, således at du kan vise $login * og $password på skærmen


Det prøvede jeg lige... den vidste hverken brugernavn eller pass... og brugernavn er det der står i dbase

Kommentar
Fra : JensT


Dato : 07-12-03 20:37

OK - ved ikke for meget selv - Men så det må være noget med at du skal have defineret de felter du skal bruge ud af basen.
Prøv at se hvordan dataene hentes i andre af modulerne.

--
Hvad jeg mener omkring $subj og $bod, er at du skal bygge hele teksten op i een variabel $bod (for body=teksten i en e-mail) - Og der så er den tekststreng du sender med mail kommandoen.

Jeg kan forestille mig at Mail kommandoen ikke kan indflette variabler sådan som du prøver at gøre det i koden.

Har du prøvet at spørge ved ham Pauk Kruyt om der evt er lavet et glemt password modul?


Kommentar
Fra : petermadsen81


Dato : 09-12-03 18:07

Nogen andre der har et bud? på hvordan jeg så kunne gøre?

Kommentar
Fra : Grubsnik


Dato : 10-12-03 12:34

Hmm, der er del begynderfejl her:

den hurtige løsning er at smide følgene 4 linier ind:
$current_row = mysql_fetch_array($result); //henter den første række (og i dette tilfælde eneste)
$mail = $current_row['mail'];
$brugernavn = $current_row['brugernavn'];
$password = $current_row['password'];

efter linien med:
if ($number > 0) {

Du kan også rette i den resterende kode, og så bare benytte $current_row['variabel navn'] i stedet for $variabel navn

Har du register_globals on?? ellers skal du bruge $_POST['mail'] i din select-statement. (Det kan kraftigt anbefales at have register_globals off (default i php4.?? og op) da det udgør en sikkerhedsrisiko.

sidst men ikke mindst bør du rette:
("select brugernavn, mail, password from navnbase where mail = '$mail'")
til:
("select brugernavn, mail, password from navnbase where mail = ".$mail.";")

jeg går ud fra at cont.php sørger for at oprette en forbindelse til din mysql database.

Kommentar
Fra : petermadsen81


Dato : 10-12-03 20:07

Mange tak... og ja havde på fornemmelsen at det var begynderfejl... Min kode ser nu således ud... (se nedenfor)

Men der kommer følgende fejlmeddelse:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /customers/3103.dk/3103.dk/httpd.www/community2/glemt_ok.php on line 14
(linie 14 er den hvor der står mail)

Det her fatter jeg rent ud sagt ikke
-Har du register_globals on?? ellers skal du bruge $_POST['mail'] i din select-
-statement. (Det kan kraftigt anbefales at have register_globals off (default iphp4.??
-og op) da det udgør en sikkerhedsrisiko.
Og derfor vil jeg tro at den er default men skal jeg skrive $_POST['mail'] der hvor jeg skriver where =

Og så lige et spørgsmål af ren nysgerrighed... hvorfor er der et punktummer og ekstra semikolon i --- >where mail = ".$mail.";")<---?

Her er koden:

<body bgcolor="#C0C0C0">
<?
include("cont.php");

$result = mysql_query("select brugernavn, mail, password from navnbase where mail = ".$mail.";") or die (mysql_error());
$number = mysql_num_rows($result);
if ($number > 0) {
$current_row = mysql_fetch_array($result); //henter den første række (og i dette tilfælde eneste)
$mail = $current_row['mail'];
$brugernavn = $current_row['brugernavn'];
$password = $current_row['password'];


mail("$current_row['mail']","Ditpassword til 3103.dk","
Hej $$current_row['brugernavn']

Her er dit Login og Password til adresser på 3103.dk

Brugernavn: $current_row['brugernavn']
Password: $current_row['password']

Mvh Peter","from: peter@3103.dk");
print "Dine oplysninger er sendt til: $current_row['mail']";
} else {
print "Din Email er desvære ikke registreret her...";
}
?>

Og ja cont.php connecter til min db

Kommentar
Fra : Grubsnik


Dato : 10-12-03 20:56

Hej Peter,

for mere information omkring register globals, så kig på følgene link: http://dk2.php.net/register_globals

Omkring mail-funktionen, så ville jeg nok gemme alle parametre i seperate variable før du laver funktionskaldet.

Grunden til at den brokker sig er fordi du ikke har afsluttet en linie med et ;

Det endelige kode bør se nogenlunde sådan her ud:

<body bgcolor="#C0C0C0">
<?php
// "<?php" bruges på systemer der har flere scriptingsprog installeret, så apache ved hvilket sprog der bliver brugt
require("cont.php"); //virker ligesom include, men stopper bare med at køre hvis filen ikke bliver fundet

$result = mysql_query("select brugernavn, mail, password from navnbase where mail = ".$_POST['mail'].";") or die (mysql_error()); // hvis man sætter et . mellem 2 tekststrenge bliver de tilføjet efter hinanden
$number = mysql_num_rows($result);
if ($number > 0)
{
   $current_row = mysql_fetch_array($result); //henter den første række (og i dette tilfælde eneste)
   $mail = $current_row['mail'];
   $brugernavn = $current_row['brugernavn '];
   $password = $current_row['password'] ;
   
   $subject = "Ditpassword til 3103.dk";
   $message = "Hej ".$brugernavn." \n\n"; // \n betyder ny linie
   $message .= "Her er dit Login og Password til adresser på 3103.dk\n\n"; // hvis man bruger .= så tilføjer man i slutningen af en streng
   $message .= "Brugernavn: ".$current_row['brugernavn ']."\n";
   $message .= "Password: ".$current_row['password']."\n\n";
   $message .= "Mvh Peter";
   $header = "from: peter@3103.dk";
   if(mail($current_row['mail '], $subject, $header) === true) //sikrer at emailen er blevet sendt videre i systemet
   {
      echo "Dine oplysninger er sendt til: ".$current_row['mail']";
   }
   else
   {
      echo "Der er opstået en fejl, sig til Peter at han skal ind på www.kandu.dk igen og spørge hvad der nu er galt ";
   }
}
else
{
   print "Din Email er desværre ikke registreret her...";
}
?>
</body>


Kommentar
Fra : petermadsen81


Dato : 10-12-03 22:33

Parse error: parse error, expecting `','' or `';'' in /customers/3103.dk/3103.dk/httpd.www/community2/glemt_ok.php on line 28


=== med den linie med dit indslag

Hvad er der nu galt??? Hvor er php dog nøjeregnene lol

Skal på ferie 4 dage så svarer ikke før søndag aften men jeg vil lige på forhånd sige tusind tak

Kommentar
Fra : Grubsnik


Dato : 10-12-03 23:10

hmm,

ret:
if(mail($current_row['ma il '], $subject, $header) === true)
til
if(mail($current_row['mail'], $subject, $message, $header))

Den burde stadig virke, og nu vil den nok også sende en meningsfuld besked afsted

Kan selvfølgelig stadig være at der er en eller anden typo jeg har overset, eller kandu's formattering har fået indført.

Kommentar
Fra : petermadsen81


Dato : 14-12-03 16:12

Jeg prøvede men den melder stadig fejl i linie 28... Og ja har prøvet at udrydde nogen af de omformateringer kandu laver... det er lidt irriterende at man ikke kan lave et vindue eller et eller andet man kan sætte det i...

Jeg har rettet den men den melder stadig fejl i line 28...

Kan du ikke bare sende siden som txt eller php som vedhøftet til min mail peter@3103.dk så har vi ihvertfald udelukket Kandus omformateringer...

Kommentar
Fra : Noxi


Dato : 14-12-03 23:27


hey i stedet for din mail sætter du

mail("jesper@grov.dk","Ditpassword til 3103.dk",
"Hey ".$current_row['brugernavn']."\n Her er dit Login og Password til adresser på 3103.dk \n Brugernavn: ".$current_row['brugernavn']."\n Password: ".$current_row['password']."Mvh Peter",
"From: peter@3103.dk");

det her ind :D fra start til slut... :D

Kommentar
Fra : kayman


Dato : 15-12-03 14:13

Der er stadig et par slåfejl. Bl.a. i din forespørgsel hvor $_POST['mail'] skal være omsluttet af ' ' og her:
echo "Dine oplysninger er sendt til: ".$current_row['mail']"; er et " for meget. Prøv med:


<body bgcolor="#C0C0C0">
<?php
// "<?php" bruges på systemer der har flere scriptingsprog installeret, så apache ved hvilket sprog der bliver brugt
require("cont.php"); //virker ligesom include, men stopper bare med at køre hvis filen ikke bliver fundet

$result = mysql_query("select brugernavn, mail, password from navnbase where mail = '".$_POST['mail']."'") or die (mysql_error()); // hvis man sætter et . mellem 2 tekststrenge bliver de tilføjet efter hinanden
if (mysql_num_rows($result) > 0)
{
$current_row = mysql_fetch_assoc($result); //henter den første række (og i dette tilfælde eneste)
$mail = $current_row['mail'];
$brugernavn = $current_row['brugernavn'];
$password = $current_row['password'];

$subject = "Ditpassword til 3103.dk";
$message = "Hej ".$brugernavn." \n\n"; // \n betyder ny linie
$message .= "Her er dit Login og Password til adresser på 3103.dk\n\n"; // hvis man bruger .= så tilføjer man i slutningen af en streng
$message .= "Brugernavn: ".$brugernavn."\n";
$message .= "Password: ".$password."\n\n";
$message .= "Mvh Peter";
$header = "From: peter@3103.dk";
if(mail($mail, $subject, $header)) //sikrer at emailen er blevet sendt videre i systemet
{
echo "Dine oplysninger er sendt til: ".$mail;
}
else
{
echo "Der er opstået en fejl, sig til Peter at han skal ind på www.kandu.dk igen og spørge hvad der nu er galt";
}
}
else
{
echo "Din Email er desværre ikke registreret her...";
}
?>
</body>


Kommentar
Fra : petermadsen81


Dato : 15-12-03 20:32

Nu har jeg kopieret det ind fra kayman.

Nu virker det igen... dvs jeg får ingen fejlmeddelse... og jeg får et brev... men det eneste der står i brevet
er -

from peter@3103.dk

-
Subject er Ditpassword
og afsender er 3103.dk

Hvad er der nu galt?

Tak for jeres tålmodighed....

Mvh Peter

siden ser nu sådan her ud

<body bgcolor="#C0C0C0">
<?php
// "<?php" bruges på systemer der har flere scriptingsprog installeret, så apache ved hvilket sprog der bliver brugt
require("cont.php"); //virker ligesom include, men stopper bare med at køre hvis filen ikke bliver fundet

$result = mysql_query("select brugernavn, mail, password from navnbase where mail = '".$_POST['mail']."'") or die (mysql_error()); // hvis man sætter et . mellem 2 tekststrenge bliver de tilføjet efter hinanden
if (mysql_num_rows($result) > 0)
{
$current_row = mysql_fetch_assoc($result); //henter den første række (og i dette tilfælde eneste)
$mail = $current_row['mail'];
$brugernavn = $current_row['brugernavn'];
$password = $current_row['password'];

$subject = "Ditpassword til 3103.dk";
$message = "Hej ".$brugernavn." \n\n"; // \n betyder ny linie
$message .= "Her er dit Login og Password til adresser på 3103.dk\n\n"; // hvis man bruger .= så tilføjer man i slutningen af en streng
$message .= "Brugernavn: ".$brugernavn."\n";
$message .= "Password: ".$password."\n\n";
$message .= "Mvh Peter";
$header = "From: peter@3103.dk";
if(mail($mail, $subject, $header)) //sikrer at emailen er blevet sendt videre i systemet
{
echo "Dine oplysninger er sendt til: ".$mail;
}
else
{
echo "Der er opstået en fejl, sig til Peter at han skal ind på www.kandu.dk igen og spørge hvad der nu er galt";
}
}
else
{
echo "Din Email er desværre ikke registreret her...";
}
?>
</body>


Accepteret svar
Fra : kayman

Modtaget 120 point
Dato : 15-12-03 21:26

Hmm, ikke så mærkeligt. Selve meddelelsen skal jo osse ind i mail():

if(mail($mail, $subject, $message, $header)) //sikrer at emailen er blevet sendt videre i systemet

Godkendelse af svar
Fra : petermadsen81


Dato : 15-12-03 22:05

Tak for svaret kayman. Jeg havde sgu stirret mig blind på koden... og anede til sidst helt ærligt ikke hvad det var jeg kopierede ind

Men nu virker det som det skal!!! Hvis der er nogen der vil have en kopi at det færdige produkt (Adressekartotek til fam og venner) Skal i bare sende en mail... peter@3103.dk

Endnu engang tak for jeres store hjælp.. og så til dem der ikke lige fik point denne gang... men bare rolig... jeg har på fornemmelsen at jeg kommer frygtetligt tilbage... har nemlig masser af gode ideer men ingen expertise lol
                        

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste