Avatar billede netpimp Nybegynder
17. september 2007 - 08:31 Der er 15 kommentarer og
1 løsning

Problem med fopen()

Jeg har et lille problem, jeg skal have et script til at virke men jeg er ikke så stærk til php.

<?php
$handle = fopen("http://www.sitename.dk/index.php?side=savetosystem&email=$_POST['email']&navn=$_POST['navn']", "r");
?>

På den forgående side har jeg en form hvor brugeren skal indtaste navn og e-mail, og når de har gjort det og trykket send, skulle den gerne åbne en url der ser således ud.

http://www.sitename.dk/index.php?side=savetosystem&email=email@adressen.dk&navn=Navn

Hvordan kan jeg få den til det?

Det skulle også gerne være sådan scriptet skriver noget forskelligt hvis f.eks. adressen når den er loaded skriver CONFIRM_MAIL_SEND skal script helst fortælle brugeren det. Hvis systemet skriver FAIL, skal bruger også have besked om der er opstået en fejl.

Håber der er en der kan hjælpe.
Avatar billede jakobdo Ekspert
17. september 2007 - 18:41 #1
Kan du ikke prøve at forklare dit spørgsmål/problem igen?
Jeg forstår ikke helt hvad du prøver.
Avatar billede netpimp Nybegynder
17. september 2007 - 19:35 #2
Jo da, på mit website har jeg en tilmeldingform hvor brugeren kan tilmelde sig mit nyhedsbrev. Nyhedsbrevs systemet køre hos maillinglist.dk, og for brugerne kan tilmelde sig via den tilmeldingsform jeg har på mit website skal jeg hente en url som den her under, når brugeren trykker tilmeld.

http://www.sitename.dk/index.php?side=savetosystem&email=email@adressen.dk&navn=Navn

Dette skulle man kunne gøre via fopen i php.

Når urlen bliver åbnet vil den udskrive CONFIRM_MAIL_SEND hvis brugeren er blevet korrekt tilmeldt, eller MAIL_ALLREADY_IN_SYSTEM hvis e-mail adressen allerede findes, og MAIL_NOT_CONFIRM_MAIL_SENT hvis mail adresse allerede findes i systemet men ikke er blevet bekræftet. Disse koder skulle jeg gerne have omskrevet til noget brugbart for brugeren, så han kan se om han er blevet tilmeldt eller om der er en fejl.

Håber det hjalp lidt med at forstå mit problem :)
Avatar billede jakobdo Ekspert
17. september 2007 - 20:05 #3
Hvorfor lave det via fopen?
Hvorfor ikke kalde det direkte i linket:

http://www.sitename.dk/index.php?side=savetosystem&email=email@adressen.dk&navn=Navn ?
Det forstår jeg ikke helt.
Avatar billede netpimp Nybegynder
17. september 2007 - 20:07 #4
Hvordan vil jeg kunne gøre det?

Grunden til jeg ville bruge fopen er fordi jeg troede det var den eneste måde jeg kunne gøre det.
Avatar billede jakobdo Ekspert
17. september 2007 - 20:14 #5
Du kan jo godt linke til siden:

http://www.sitename.dk/index.php?side=savetosystem&email=email@adressen.dk&navn=Navn

Og på index.php laver du så din tjek mod en database, samt giver en melding til brugeren.

Forstår du?
Avatar billede netpimp Nybegynder
17. september 2007 - 20:20 #6
Problemet er at index.php ikke er min side, den ligger hos maillinglist.dk, hvor dataen skal sendes til for at brugeren bliver tilmeldt mit nyhedsbrev.

Den helt rigtige adresse som skal pinges ser sådan ud:
http://www.mailinglist.dk/v2/index.php?side=savetosystem&email=info@mailinglist.dk&id=21&navn=Per Dalbjeg

Mit website ligger på et helt andet domæne.
Avatar billede jakobdo Ekspert
17. september 2007 - 20:39 #7
Ahh, så tror jeg efterhånden jeg er med.
Du kan bruge fopen ja!
Du kunne også kigge på:

$response = file_get_contents('http://www.mailinglist.dk/v2/index.php?side=savetosystem&email=info@mailinglist.dk&id=21&navn=Per Dalbjeg');

echo $response;
Avatar billede netpimp Nybegynder
17. september 2007 - 20:44 #8
Okay, men jeg har et problem med hvordan jeg får dataen fra formen og ind i den adresse som skal åbnes. Så det er brugerens navn og e-mail adresse som står der.
Avatar billede jakobdo Ekspert
17. september 2007 - 20:51 #9
<?php
$email = $_POST['email'] eller $_GET['email']; //Brug Post hvis det kommer fra en form med method="post" eller GET hvis det kommer fra en URL
$navn  = $_POST['navn'] eller $_GET['navn']; //Samme som ovenfor
$url = 'http://www.mailinglist.dk/v2/index.php?side=savetosystem&email='.$email.'&id=21&navn=' . $navn;
$response = file_get_contents($url);
?>
Avatar billede netpimp Nybegynder
17. september 2007 - 21:04 #10
Nu virker det bortset fra hvis personen både skriver fornavn og efternavn, så melder den fejl. Kan man gøre sådan den selv skriver %20 hvis der er et mellemrum i navnet?
Avatar billede jakobdo Ekspert
17. september 2007 - 21:21 #11
Prøv at kig på:

$navn = urlencode($_POST['navn']);
Avatar billede netpimp Nybegynder
17. september 2007 - 21:49 #12
Super tak skal du have :)

Har du også en idé om hvordan jeg kan få scriptet til at svare brugeren på de beskeder jeg får fra modtager serveren?

Altså når den url bliver kaldt med e-mail og navn osv. Så udskriver den CONFIRM_MAIL_SEND hvis alt er  iorden og MAIL_ALLREADY_IN_SYSTEM hvis e-mail adresse allerede findes i systemet. Hvordan kan jeg lave sådan brugeren får en meddelse om det?
Avatar billede jakobdo Ekspert
17. september 2007 - 21:55 #13
Du kan udskrive $response:
echo $response;

Du kan også lave din egne beskeder:

switch($response)
{
case 'CONFIRM_MAIL_SEND':
echo 'Email er afsendt, blablabla...';
break;
case 'MAIL_ALREADY_IN_SYSTEM':
echo 'Emailen er allerede i vores system';
break;
default:
echo 'Ukendt fejl';
}
Avatar billede netpimp Nybegynder
17. september 2007 - 22:25 #14
Super, tak skal du have :)

Hvis du lige ligger et svar, så får du point.
Avatar billede jakobdo Ekspert
18. september 2007 - 07:44 #15
Svar!
Avatar billede jakobdo Ekspert
18. september 2007 - 08:22 #16
Takker for point.
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