/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
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
Send brugeroplysninger?
Fra : Martin Ploug


Dato : 15-02-06 20:46

Hej

Jeg vil lave en funktion/side, der sender en brugeres
brugernavn og kodeord til den indtastede e-mail
adresse.

Jeg har en idé om, hvordan det kan hænge sammen,
men har startproblemer. Jeg håber nogen her kan
hjælpe.

Jeg har en side med en indtastningsfelt til e-mail adressen.
Feltet har name="email". det ser ud som om det indtastede
bliver sendt med til side nr.2, hvis jeg skriver:

$mail = $_GET['email'];
//echo $mail;


Mit foreløbige script ser ud som nedenstående.
Men email bliver ikke skrevet ud.
Er syntaksen rigtig?
Hvornår er det man bruger array og hvornår er der row?

$mail = $_GET['email'];
//echo $mail;


if (isset($mail)){

$resultat = mysql_query("SELECT brugernavn, kodeord, email FROM udlejer
WHERE udlejer.email = '$mail'")or die(mysql_error());
}


while ($row = mysql_fetch_array($resultat)) {

echo $row['email'];

?>

På forhånd tak.

Med venlig hilsen
Martin



 
 
Bertel Lund Hansen (15-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-02-06 22:18

Martin Ploug skrev:

> Jeg har en side med en indtastningsfelt til e-mail adressen.
> Feltet har name="email". det ser ud som om det indtastede
> bliver sendt med til side nr.2, hvis jeg skriver:

> $mail = $_GET['email'];
> //echo $mail;

> Mit foreløbige script ser ud som nedenstående.
> Men email bliver ikke skrevet ud.
> Er syntaksen rigtig?

De to skråstreger bevirker at det følgende på samme linje
ignoreres.

> Hvornår er det man bruger array og hvornår er der row?

Et array er en bestemt struktur. Navnet $row kunne sådan set lige
så godt være $gamleole. Imidlertid er der en vis logik i at kalde
det "row" fordi man refererer til en 'række' i en database (som
man forestiller sig som en tabel). Når man bruger
mysql_fetch_array(), bliver resultatet kopieret til et array. Et
array kan man sådan set forstille sig som både en række og en
søjle (eller noget andet), men som sagt er det fra databasen man
har ideen om en række.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Simon Rasch 9640 (15-02-2006)
Kommentar
Fra : Simon Rasch 9640


Dato : 15-02-06 23:28

<SNIP>
> Hvornår er det man bruger array og hvornår er der row?
<SNIP>

Du bør læse om typer (f.eks array) på
http://dk.php.net/manual/da/language.types.array.php
og om variabler (f.eks. $row eller $x og $y og $gamleOle) på
http://dk.php.net/manual/da/language.variables.php


Simon Rasch



Dan Storm (16-02-2006)
Kommentar
Fra : Dan Storm


Dato : 16-02-06 11:10

Martin Ploug skrev:
> Mit foreløbige script ser ud som nedenstående.
> Men email bliver ikke skrevet ud.
> Er syntaksen rigtig?
[snip]

Syntaksen er rigtig, men jeg mener ikke fremgangsmåden er korrekt.
Du bør validere inputtet og samtidig beskytte dig mod sql injection.
F.eks.

<?php

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

$query = mysql_query("SELECT brugernavn, kodeord, email FROM udlejer
WHERE email = '".mysql_real_escape_string($_POST['mail'])."'");

if(mysql_num_rows($query) < 1)
{
echo 'Emailadressen kunne ikke findes i databasen.';
exit;
}

$message = "Til ".mysql_result($query, 0, "brugernavn")."\r\n\r\n";
$message .= "Dine loginoplysninger er blevet rekvireret og er som
følgende:\r\n\r\n";
$message .= "Brugernavn: ".mysql_result($query, 0, "brugernavn")."\r\n";
$message .= "Kodeord: ".mysql_result($query, 0, "kodeord")."\r\n\r\n";
$message .= "Med venlig hilsen\r\nMit website";

mail(mysql_result($query, 0, "email"), "Rekvireret loginoplysninger",
$message, "From: Mit Website <noreply@mydomain.com>");

echo 'Dine loginoplysninger er blevet sendt til den mail du oplyste.';


}

?>

I store hovedtræk gør den det du mangler.
I tilfælde af at du er i tvivl så betyder \r\n bare ny linie (lidt ala
<br />)

Samtidig kontrollerer den mailadressen og går ikke videre med scriptet
hvis mailadressen ikke eksisterer.

> Hvornår er det man bruger array og hvornår er der row?

din $row er et array.
$row = mysql_fetch_array($query) gør det at den henter resultaterne fra
din mysql forespørgsel og sætter resultaterne ind i $row som et array.

Du kunne også gøre således istedet:
$row = mysql_fetch_object($query)
Så er $row blevet til et objekt hvor du blot henter resultaterne som med
andre objekter! (feks. $row->email) Læs lidt om Object Orientated
Programming.

Men igen, $row = mysql_fetch_array($query) er fuldstændig det samme som
$row = array(alle_resultaterne_fra_mysql_forespørgslen);

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Martin Ploug (16-02-2006)
Kommentar
Fra : Martin Ploug


Dato : 16-02-06 18:55

> Syntaksen er rigtig, men jeg mener ikke fremgangsmåden er korrekt.
> Du bør validere inputtet og samtidig beskytte dig mod sql injection.
> F.eks.
>
> <?php
>
> if(isset($_POST['mail'])) {
>
> $query = mysql_query("SELECT brugernavn, kodeord, email FROM udlejer
> WHERE email = '".mysql_real_escape_string($_POST['mail'])."'");
>
> if(mysql_num_rows($query) < 1)
> {
> echo 'Emailadressen kunne ikke findes i databasen.';
> exit;
> }
>
> $message = "Til ".mysql_result($query, 0, "brugernavn")."\r\n\r\n";
> $message .= "Dine loginoplysninger er blevet rekvireret og er som
> følgende:\r\n\r\n";
> $message .= "Brugernavn: ".mysql_result($query, 0,
"brugernavn")."\r\n";
> $message .= "Kodeord: ".mysql_result($query, 0, "kodeord")."\r\n\r\n";
> $message .= "Med venlig hilsen\r\nMit website";
>
> mail(mysql_result($query, 0, "email"), "Rekvireret loginoplysninger",
> $message, "From: Mit Website <noreply@mydomain.com>");
>
> echo 'Dine loginoplysninger er blevet sendt til den mail du oplyste.';
>
>
> }
>
> ?>


Til Dan og i andre

Tusind tak for det færdige script!
Det er virkelig pænt af dig.
Virkelig god hjælp.

Det ser ud til at virke, som det skal.

Jeg vil iøvrigt også sige tak for I andres indlæg

Jeg har lige to små spørgsmål.

Jeg kan vel bare lade et javascript validere for, om der
er indtastet noget i feltet?

Hvad gør mysql_real_escape_string?
laver den en form for kryptering af e-mail adressen?

På forhånd tak.

Med venlig hilsen
Martin




Dan Storm (17-02-2006)
Kommentar
Fra : Dan Storm


Dato : 17-02-06 07:53

Martin Ploug skrev:

> Jeg kan vel bare lade et javascript validere for, om der
> er indtastet noget i feltet?

Jo, det kan du sagtens, men personligt er jeg imod javascript hvor det
principielt ikke er nødvendigt. Men spørg i
dk.edb.internet.webdesign.clientside hvis det er den løsning du vil tage
i stedet.

>
> Hvad gør mysql_real_escape_string?
> laver den en form for kryptering af e-mail adressen?

Det den gør er at escape tegn som anførselstegn således man undgår at
folk kan sende SQL kommandoer til din database og eventuelt ødelægge
eller overtage den.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Martin Ploug (17-02-2006)
Kommentar
Fra : Martin Ploug


Dato : 17-02-06 18:37


"Dan Storm" <shadyz@_REMOVETHIS_err0r.dk> wrote in message
news:43f572be$0$191$edfadb0f@dread16.news.tele.dk...
> Martin Ploug skrev:
>
> > Jeg kan vel bare lade et javascript validere for, om der
> > er indtastet noget i feltet?
>
> Jo, det kan du sagtens, men personligt er jeg imod javascript hvor det
> principielt ikke er nødvendigt. Men spørg i
> dk.edb.internet.webdesign.clientside hvis det er den løsning du vil tage
> i stedet.
>
> >
> > Hvad gør mysql_real_escape_string?
> > laver den en form for kryptering af e-mail adressen?
>
> Det den gør er at escape tegn som anførselstegn således man undgår at
> folk kan sende SQL kommandoer til din database og eventuelt ødelægge
> eller overtage den.
>
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
> Tro ikke brugerne vil gøre noget for at undgå dit killfilter
> - Så vigtig er du heller ikke!

Endnu en gang tak for jeres hjælp.
Det er super.

Hilsen Martin



Leif Neland (17-02-2006)
Kommentar
Fra : Leif Neland


Dato : 17-02-06 08:42

Martin Ploug wrote:

> Jeg kan vel bare lade et javascript validere for, om der
> er indtastet noget i feltet?

Det skader ikke, og det kan da også give brugeren hurtigere tilbagemelding
på fejl aflaste serveren at den ikke skal behandle sider, browseren allerede
har fundet fejl i.

Men:
1: Brugeren kan have slået javascript fra.
2: Der er ingen garanti for at din "modtageside" bliver kaldt fra din
"sendeside".

Jeg kan sagtens lade mit sendeside kalde din modtagerside.
Eller jeg kan lave et program, der kalder din modtagerside og misbruger den
til at sende spam, hvis du ikke har skrevet den ordentligt.

Leif




Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste