[PHP]layout van PHP pagina

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 07-10 21:04

EXX

EXtended eXchange

Topicstarter
Ik ben hier bezijg met een website. Daar moet een form op komen waarmee mensen een berichtje kunnen sturen, niks bijzonders.

Ik ben zover dat ik een html pagina heb die het formulier laat zien, waar je alles kan invullen en vervolgens met de submit knop kan wegzenden. Dit laatste gebeurt zoals gewoonlijk dmv een php script. Dat alles werkt; ik zie de e-mail verschijnen in mijn mailbox.

Het probleem wat ik nu nog heb is dat de layout van de php pagina niet overeen komt met de layout van de andere web pagina's: het is niet meer dan een blanke pagina met wat tekst dat de zaak verzonden is, dat het goed of fout gegaan is en een link naar de homepage.

Wat natuurlijk de bedoeling is, is dat de pagina dezelfde layout heeft als de rest van de site. Na wat speuren met google lijkt het erop dat je de php en html gewoon kan mengen, dus je neemt de html en css die je ook voor de andere html pagina's gebruikt en zet dat in de php pagina. Het resultaat is echter een compleet lege pagina, en ook het verzenden van de e-mail werkt niet meer.

Wat zie ik over het hoofd?

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


Acties:
  • 0 Henk 'm!

  • ByteMe_
  • Registratie: Januari 2009
  • Niet online
Het plaatsen van de betreffende code in dit topic ;) We kunnen niet raden wat er gebeurt.

Mijn laatste reviews: Xiaomi Mi 9T | Mpow H12


Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 15:56
(Dit hoort waarschijnlijk meer thuis in Programming.)

Probeer het volgende eens bovenaan de pagina te zetten:
PHP:
1
2
3
4
<?php
error_reporting(-1);
ini_set('display_errors', 'on');
?>


En post het resultaat hier :)

Acties:
  • 0 Henk 'm!

  • Raem
  • Registratie: Oktober 2005
  • Laatst online: 23:03
Ik zou aan het einde van je PHP script een header plaatsen die je door laat sturen naar een bedankpagina. Dit kan dan gewoon weer een html pagina zijn.

http://php.net/manual/en/function.header.php

https://psnprofiles.com/RaemNL


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 22:47
Je kan ook bij een succesvol verzonden mail een redirect naar contact_succesvol.html plaatsen, dan zie je de PHP pagina niet eens. Dat is waarschijnlijk makkelijker dan wat je nu probeert te doen, aangezien ik daaruit afleidt dat je niet heel veel PHP kennis hebt.


PHP:
1
header('Location: contact_succesvol.html');



Edit: wat Raem zegt dus.

[ Voor 6% gewijzigd door Arjan90 op 07-01-2016 15:54 ]

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 07-10 21:04

EXX

EXtended eXchange

Topicstarter
Mijn PHP kennis is inderdaad nogal beperkt, dus die header functie lijkt me een hele goeie.

edit:

Het werkt als het formulier goed verstuurd wordt (getest met de webserver zelf). Als er een error conditie optreedt (als ik test via xampp) echter niet.

Dit is de PHP file:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    $name = $_POST['naam'];
    $email = $_POST['email'];
    $message = $_POST['bericht'];
    $subject2 = $_POST['onderwerp'];
    
    $from = 'From: noreply'; 
    $to = 'foo@hotmail.com'; 
    $subject = 'Formulier verstuurt vanaf website';
    
    $body = "$subject\n\nVan: $name\n E-Mail: $email\n Onderwerp: $subject2\n Bericht: $message\n";

    if ($_POST['submit']) {
        if (mail($to, $subject, $body, $from)) { 
            header("Location: http://blabla.nl/nl/contact_ok.html");
        } else { 
            header("Location: http://blabla.nl/nl/contact_error.html");
        }
    }   
    exit;
?>


Ik krijg nu een foutmelding (wat op zich wel klopt), maar de redirect werkt niet meer. Dit is de foutmelding:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\APPLIC\APPWIN32\Xampp\htdocs\qchp1\php\verstuur.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at D:\APPLIC\APPWIN32\Xampp\htdocs\qchp1\php\verstuur.php:14) in D:\APPLIC\APPWIN32\Xampp\htdocs\qchp1\php\verstuur.php on line 17


Wat me ook opvalt is dat je een aboluut pad moet aangeven. in de location. Ik had eerst iets van ../nl//contact_ok.html, maar dat werkte niet.

edit2:
Een error_reporting(0); bovenaan in het script zorgde ervoor dat het ook in een foutsituatie werkt; ik krijg mooi de error pagina dat het niet gewerkt heeft. Nu nog kijken hoe ik een logfile kan genereren.

edit3:
Het werkt nu ook met een relative path. Ik heb geen idee waarom het eerst niet werkte.

[ Voor 97% gewijzigd door EXX op 07-01-2016 16:44 ]

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Spammers gaan je op hun knietjes bedanken als je die code zo live zet. :X Zie Wikipedia: Email injection

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Warning: Cannot modify header information - headers already sent by (output started at ...
Dit geeft aan waarom je redirect niet werkt. Je kunt geen redirect doen (d.m.v. PHP Headers) wanneer er al output -- dus tekst (zoals een error) -- op het scherm / de pagina is geprint door PHP.





LET OP: Lees verder aub over hoe je veilig gebruik kunt maken van $_POST variabelen, dit kan door iedereen misbruikt worden.

Wat NMe zegt dus :)

[ Voor 3% gewijzigd door OkkE op 07-01-2016 17:09 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 23:09

Reinier

\o/

Formulier verstuurt vanaf website moet natuurlijk Formulier verstuurd vanaf website zijn, al lost dat helemaal niks op :)

Acties:
  • 0 Henk 'm!

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 07-10 21:04

EXX

EXtended eXchange

Topicstarter
Damn, die e-mail injection is wel ernstig. Bedankt jongens, daar had ik nog niet zo snel aan gedacht. Werk aan de winkel dus.

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

De makkelijkste manier om daar omheen te werken is trouwens PHPMailer of iets vergelijkbaars gebruiken. Zelf met PHP's mail-functie werken kan wel maar dat levert nogal wat gezeur op als je niet precies weet wat je doet en dat levert mailtjes in de spamfolder op. PHPMailer haalt je die zorgen uit handen en dat heeft als bijwerking dat je geen mailheaders kan injecteren.

[ Voor 9% gewijzigd door NMe op 07-01-2016 21:46 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1