Jump to content
Geplaatst:
comment_308222

He allemaal,

Ik ben bezig met een contact script in php wat ondertussen werkt. Maar ik zet met 1 probleempje als hij hem verzonden heeft en je telkens op refresh drukt blijft hij mailtjes versturen.

En dat is dus niet de bedoeling.

Dit is het formulier:

<form name="contact" method="post" action="send.php">
<table cellspacing="2" cellpadding="2">
 <tr valign="top" align="left">
<td> Naam:</td>
<td>
<input  name="naam" type="text" size="25"/>
</td>
</tr>
<tr valign="top" align="left">
<td>Email: </td>
<td>
<input name="mail" type="text" size="25" /></td>
</tr>
<tr valign="top" align="left">
<td>Onderwerp: </td>
<td>
<input name="onderwerp" type="text" size="25"  /></td>
</tr>
<tr valign="top" align="left">
<td>Bericht: </td>
<td><textarea name="bericht" rows="7" cols="40" /></textarea></td>
</tr>
<tr valign="top" align="left"> 
  <td> </td> 
  <td> 
	<input type="submit" name="Submit" value="Verzend"> 
  </td> 
</tr>
</table>
</form>

En dit is het verzend script:

<?php

$mailsupport= "mij@mail.nl";
$titel= "Support Ticket Contact -" . $_POST['onderwerp'];
// set datum 
$datum = date("d.m.Y H:i"); 
// set ip 
$ip = $_SERVER['REMOTE_ADDR']; 
// Bericht
$mssg = 
$mssg .= "Ingevuld Contact Formulier \n\n";
$mssg .= "Naam: " .$_POST['naam'] . "\n";
$mssg .= "Mail Adres: " .$_POST['mail'] . "\n";
$mssg .= "Onderwerp: " .$_POST['onderwerp'] . "\n";
$mssg .= "Bericht:" . "\n";
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum van het ip adres " . $ip . ".";
//Afzender
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">"; 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

if (empty($naam)) { echo "U bent iets vergeten in te vullen !!<br> 
Klik <a href=\"java script:history.back(1)\">hier</a> om terug tegaan."; 
} elseif (empty($mail))  { echo "U bent iets vergeten in te vullen !!!<br> 
Klik <a href=\"java script:history.back(1)\">hier</a> om terug tegaan."; 
} elseif (empty($onderwerp)) { echo "U bent iets vergeten in te vullen !!!<br> 
Klik <a href=\"java script:history.back(1)\">hier</a> om terug tegaan."; 
} elseif (empty($bericht)) { echo "U bent iets vergeten in te vullen !!!<br> 
Klik <a href=\"java script:history.back(1)\">hier</a> om terug tegaan."; 
} else { 

mail ($mailsupport, $titel, $mssg, $headers);
echo "Je bericht is verstuurd";
}
}
?>

Graag hulp.

  • Reacties 62
  • Bezichtigingen 19.2k
  • Created
  • Laatste reactie

Top Posters In This Topic

Featured Replies

Geplaatst:
comment_1178443

Het is me al gelukt, nu een ander probleem (al opgelost) waar veel andere problemen aan hangen:

Tussen 0:00 en 9:00 zie je nog de datum van de dag ervoor omdat de servertijd dan nog op de dag ervoor zit. Voorbeeld:

Het is 25 november 8:35. Je ziet op de klok dan staan 24-11-2008 8:35. Dit is al opgelost, maar als het nu 1 december 8:35 is komt er 31-11-2008 8:35 te staan (30+1=31) i.p.v. 1-12-2008 8:35. Nu moet ik dus een maand erbij tellen en -28, -29, -30 of -31 doen bij de dagen. Ten eerste weet ik geen script ervoor, en ten tweede moet ik er ook nog eens achter komen of het een jaar is met 29 februari. Als dit opgelost is is er nog een probleem: Het is 1-1-2009 8:35. Dan staat er 1-13-2008 8:35. Dus moet de maand -12 en het jaar +1. Een lijst met alle problemen:

dag te vroeg voor 9:00 Opgelost
maand erbij op eind maand/schrikkeljaar controleren Niet opgelost
jaar erbij op eind jaar Niet opgelost

Bewerkt: door Donald F. Duck

Geplaatst:
comment_1178555

Ik heb een beter idee: heel dit PHP script laten zitten en JavaScript gebruiken. PHP is een server-side taal, terwijl JavaScript client-side is. Met PHP's date() functie haal je dus de tijd en datum van de server, maar met Javascript haal je de tijd en datum van de computerinstellingen van degene die jouw site probeer te bekijken. Dan hoef je dus helemaal niks om te rekenen. Ik weet niet precies hoe bekend je bent met JavaScript, maar misschien is dit handig om eens door te lezen.

Edit: maar stel nou dat iemand in een andere tijdzone je site probeert te bekijken? Onwaarschijnlijk misschien, maar niet onmogelijk. Denk ik ook weer eens iets te weten, wordt het wéér onderuitgehaald :7 Niks ten nadele van jou hoor marcootje, ik vind het juist goed dat je zoveel ervaring en kennis hebt. :tu:

Bewerkt: door K.O.

Geplaatst:
comment_1178564
Ik heb een beter idee: heel dit PHP script laten zitten en JavaScript gebruiken. PHP is een server-side taal, terwijl JavaScript client-side is. Met PHP's date() functie haal je dus de tijd en datum van de server, maar met Javascript haal je de tijd en datum van de computerinstellingen van degene die jouw site probeer te bekijken. Dan hoef je dus helemaal niks om te rekenen. Ik weet niet precies hoe bekend je bent met JavaScript, maar misschien is dit handig om eens door te lezen.

Niet helemaal waar, kijk maar naar de tweede parameter van de functie date(), dat is de parameter timestamp

HUH, maar wat is een timestamp dan?

Een timestamp is ongeveer de meest populaire vorm om een datum op te slaan. Het is namelijk het aantal seconden sinds de unix epoch, 1 Januari 1970 01:00 (of zoiets)

whatever, to the point:

als je nou gewoon dit doet:

date("Het formaat", time()+9*60*60);

dan heb je de tijd, maar dan 9 uur erbij geteld (volgens mij wilde je dat of niet?)

9*60*60: 9 uur*60 minuten*60seconden, voor de duidelijkheid

Ik hoop dat je hier wat aan hebt

succes verder

mvg

Marco

Geplaatst:
comment_1178658

Bij welke date() functie moet ik de time() functie dan neerzetten? Deze heb ik:

$date=date("j");
$month=date("n");
$year=date("Y");
$hour=date("H");
$min=date("i");

Geplaatst:
comment_1178872
Bij welke date() functie moet ik de time() functie dan neerzetten? Deze heb ik:

$date=date("j");
$month=date("n");
$year=date("Y");
$hour=date("H");
$min=date("i");

bij $date, $month, $year en $hour. minuten zou niets uit moeten maken

als je het verder niet hoeft te bewerken kun je het ook zo doen he:

$date=date("j-n-Y H:i", time()+9*60*60);

succes

mvg

Marco

Bewerkt: door marcootje

Geplaatst:
comment_1180074

Bedankt, werkt perfect.

dag te vroeg voor 9:00 Opgelost
maand erbij op eind maand/schrikkeljaar controleren Opgelost
jaar erbij op eind jaar Opgelost
  • 2 weken later...
Geplaatst:
comment_1193875
maar stel nou dat iemand in een andere tijdzone je site probeert te bekijken? Onwaarschijnlijk misschien, maar niet onmogelijk.

Je kunt dmv verschillende functies erachter komen waarvandaan een aanvraag komt, de ene betrouwbaarder dan de andere. Als je de tijdzone daarbij kan verzinnen weet je hoeveel seconden je erbij moet optellen/eraf moet halen.

Als je gasten laat registeren (kan overigens ook zonder registratie) kun je ze hun eigen tijdzone laten instellen, zodat je de tijden, ook dmv date() kunt aanpassen.

een zelfde functie als date() is strftime(), maar die past de tijd automatisch aan aan de ingestelde tijdzone (vooraf bepaald dus, met setlocale() )

Nog meer weetjes :)

Mvg

Marco

Bewerkt: door marcootje

  • 5 maanden later...
Geplaatst:
comment_1376014

Ik heb nu mooi een scriptje via GD die je de huidige dag enz. laat zien:

<?php
function LoadCalendar()
{
   $im = @imagecreatefrompng('blank.png');
   $black = imagecolorallocate($im, 0, 0, 0);
   $txtcol = imagecolorallocate($im, 1, 1, 1);
   $white = imagecolorallocate($im, 255, 255, 255);
   $font = 'segoeui.ttf';

   // Begin kalender \\
   $dayn = date('w');    // dag (zaterdag, zondag, ...)
   $day = date('j');     // dag (1, 2, ...)
   $month = date('n');   // maand
   $year = date('Y');    // jaar
   $days = array('zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag');   // dag omzetten
   $months = array('0','jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec');	// maand omzetten
   imagettftext($im, 20, 0, 50, 137, $txtcol, $font, $days[$dayn]);
   if ($day < 10) {
    imagettftext($im, 75, 0, 63, 220, $txtcol, $font, $day);
   } else {
   	imagettftext($im, 75, 0, 10, 220, $txtcol, $font, $day);
}
   imagettftext($im, 27, 0, 122, 173, $txtcol, $font, $months[$month]);
   imagettftext($im, 27, 0, 122, 215, $txtcol, $font, $year);
   imagecolortransparent($im, $black);
   // Eind kalender \\

   // Kijken of het is mislukt
   if(!$im)
   {
       // Zo ja, maak een lege afbeelding
       $im  = imagecreatetruecolor(150, 30);
       $bgc = imagecolorallocate($im, 255, 255, 255);
       $tc  = imagecolorallocate($im, 0, 0, 0);

       imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

       // En laat een errortekst zien
       imagestring($im, 1, 5, 5, 'Error loading calendar', $tc);
   }
   return $im;
}

header('Content-Type: image/png');

$img = LoadCalendar();
imagepng($img);
imagedestroy($img);
?>

Voor vandaag krijg je dan:

r89nh3.jpg

Ik wil nu deze kalender uitbreiden zodat je ook zelf een datum kan instellen voor die afbeelding, bijv. met <img src="calendar.php?day=8&month=6&year=2009" />, maar ook zonder enige variabelen waardoor je de huidige datum krijgt. Omdat ik ook zaterdag, zondag enz. in de kalender heb staan wil ik ook dat de dag automatisch wordt berekend aan de hand van de ingevulde datum (in mijn img voorbeeld dus maandag 8 juni 2009).

Is dit mogelijk of moet ik het via een andere manier doen?

Geplaatst:
comment_1376224

Natuurlijk is dit mogelijk. Het is ongetwijfeld niet de meest optimale methode, maar zelf denk ik aan de strtotime() en de getdate() functies, die je misschien even kunt nazoeken op php.net.

Maak een HTML formuliertje om de datum in te stellen en gebruik de GET-methode om de variabelen in de URL zichtbaar te krijgen. Dan doe je zoiets:

if (isset($_GET['day']) && isset($_GET['month']) && isset($_GET['year']))
{
  $timestamp = strtotime($_GET['day'] . ' ' . $_GET['month'] . ' ' . $_GET['year']);
  $date = getdate($timestamp);
}
else
{
  $date = getdate();
}
$dayn = $date['weekday'];
$day = $date['mday'];
//...etc...

Geplaatst:
comment_1376289

Hoe krijg ik dit in mijn script verwerkt?

Mijn doel is:

<img src="calendar.php?day=8&month=8&year=2009" />

Of, als ik de echte datum wil hebben:

<img src="calendar.php" />

Geplaatst:
comment_1376340

@rakker126: zie Thundercover's reactie...

.....

@ rakker126: Volgens mij heb je niet speciale ondersteuning nodig.

@ eend:

gewoon zo'n url (calendar.php?day=8&month=8&year=2009) meegeven inderdaad, en dan bij

// Begin kalender \\

het volgende, voor alle data:

if(isset($_GET['day']))

$day = $_GET['day'];

else

$day = date('j');

let op: niet getest ;)

Geplaatst:
comment_1376470
[...]

@ eend:

gewoon zo'n url (calendar.php?day=8&month=8&year=2009) meegeven inderdaad, en dan bij

// Begin kalender \\

het volgende, voor alle data:

if(isset($_GET['day']))

$day = $_GET['day'];

else

$day = date('j');

let op: niet getest ;)

Ok, is er nu ook een manier om vanuit de datum die je hebt ingevoerd de dag (zaterdag, zondag, enz.) te berekenen?

Edit: Dit werkt dus niet, ik heb mijn variabelen verandert naar:

    $dayn = date('w');    // dag (zaterdag, zondag, ...)
   if (isset($_GET['day'])) {     // als dag is ingesteld in de link...
    $day = $_GET['day'])); // ...dan wordt die dag de variabel
   } else {                       // is dit niet zo...
    $day = date('j');      // ...dan berekenen we de huidige dag
   }
   if (isset($_GET['month'])) {  // als maand is ingesteld in de link...
       $month = $_GET['month')); // ...dan wordt die maand de variabel
   } else {                      // is dit niet zo...
       $month = date('n');       // ...dan berekenen we de huidige maand
}
   if (isset($_GET['year'])) {   // als jaar is ingesteld in de link...
       $year = $_GET['year']));  // ...dan wordt dat jaar de variabel
   } else {                      // is dit niet zo...
       $year = date('Y');        // dan berekenen we het huidige jaar
   }

Het enige dat-ie dan geeft is een wit vak met een rood kruisje. Maak ik de goede regels comment (dus alles hiervan op de date-defines na), werkt het script gewoon.

Bewerkt: door Donald F. Duck

Geplaatst:
comment_1376491
[...]

@ eend:

gewoon zo'n url (calendar.php?day=8&month=8&year=2009) meegeven inderdaad, en dan bij

// Begin kalender \\

het volgende, voor alle data:

if(isset($_GET['day']))

$day = $_GET['day'];

else

$day = date('j');

let op: niet getest ;)

Ok, is er nu ook een manier om vanuit de datum die je hebt ingevoerd de dag (zaterdag, zondag, enz.) te berekenen?

Edit: Dit werkt dus niet, ik heb mijn variabelen verandert naar:

    $dayn = date('w');    // dag (zaterdag, zondag, ...)
   if (isset($_GET['day'])) {     // als dag is ingesteld in de link...
    $day = $_GET['day'])); // ...dan wordt die dag de variabel
   } else {                       // is dit niet zo...
    $day = date('j');      // ...dan berekenen we de huidige dag
   }
   if (isset($_GET['month'])) {  // als maand is ingesteld in de link...
       $month = $_GET['month')); // ...dan wordt die maand de variabel
   } else {                      // is dit niet zo...
       $month = date('n');       // ...dan berekenen we de huidige maand
}
   if (isset($_GET['year'])) {   // als jaar is ingesteld in de link...
       $year = $_GET['year']));  // ...dan wordt dat jaar de variabel
   } else {                      // is dit niet zo...
       $year = date('Y');        // dan berekenen we het huidige jaar
   }

Het enige dat-ie dan geeft is een wit vak met een rood kruisje. Maak ik de goede regels comment (dus alles hiervan op de date-defines na), werkt het script gewoon.

als je in de broncode van het plaatje kijkt zul je foutmeldingen vinden, door deze regels:

$month = $_GET['month'));

die )) moet ] worden, bij elk de dag, maand, en jaar ook $dayn moet je trouwens van de GET-variabele dag af laten hangen

Geplaatst:
comment_1376577

Aha, soms verwar ik me met {[( )]}.

Maar hoe kan ik de $dayn van de day af laten hangen?

Voor de rest werkt het script volledig. Ook handig is dat als je bijv. iets elke maand doet op bijv. de 5e, hoef je alleen maar 5 in te vullen en dan wordt alleen de huidige maand/jaar uitgerekend.

Bewerkt: door Donald F. Duck

Geplaatst:
comment_1376849
Aha, soms verwar ik me met {[( )]}.

Maar hoe kan ik de $dayn van de day af laten hangen?

Voor de rest werkt het script volledig. Ook handig is dat als je bijv. iets elke maand doet op bijv. de 5e, hoef je alleen maar 5 in te vullen en dan wordt alleen de huidige maand/jaar uitgerekend.

dayn is inderdaad ietsje lastiger, hier heb je een voorbeeldje:

// onder dag, maand en jaar. deze 3 moet je weten
$dayn = date('w', mktime(0,0,0, $month, $day, $year)); // dag (zaterdag, zondag, ...)

mktime() maakt van de maand&dag&jaar een timestamp (op 12 uur middernacht), welke in de tweede parameter van date() wordt gebruikt om $dayn te berekenen.

Gast
Dit onderwerp is gesloten.

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.