som jag tog upp i tidigare tråd http://www.webforum.nu/showthread.php?t=134097
så behövde jag hjälp att få ingång några kommandon för att den ska skriva ut medelandet och namnet i headern som personen skrev när den fyllde i formuläret, allt fungerade perfekt så jag lät allt vara.
Nu idag när jag testar det vägrar den skriva nånting!
Utan att jag rört ett enda tecken i koden :o :o
vad kan ha hänt?
$message slutar fungera
23 svar · 475 visningar · startad av Iceyes
Vad händer ?
Skickas mailet ?
Vad står det i adressfältet ?
Får du helt blank sida, och i så fall vad står i den genererade HTML-koden ?
Den skickar medelandet precis som vanligt
adressfälet har precis samma adress som innan .php?done=1
<?
session_start() ;
if(isset($_GET['done'])) {
echo '<center>Vi tackar för ditt meddelande '.$_SESSION['realname'].'<br />
Följande meddelande:<em><br />
<br />
'.$_SESSION['message'].'</em><br /><br />
har leverats</center>';
unset($_SESSION['realname'], $_SESSION['message']);
}
?>
den skriver endast så här ovastett va man skriver i formuläret:
Vi tackar för ditt meddelande
Följande meddelande:
har leverats
Lagrar du verkligen realname och message i sessionsvariabler? Ska du inte hämta dem med $_GET från formuläret?
mvh
Jag tror den just nu bara känner igen dem på namnet. men det funkade faktiskt från början men som sagt inte längre. vad hade du som tips att man skulle skriva annars?
session_start koden finns med, men plockade inte med den här.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="/sendmail.php">
<p><b>Ärende:</b><br>
<input type=text name="subject" size="45" value="">
<br>
<b> Ditt Namn:</b><br>
<input type=text name="realname" size="45" value="">
<br />
<b>Din Email:</b><br>
<input type=text name="email" size="45" value="">
<br>
</p>
<p><b>Komentar:</b><br>
<textarea name="message" rows="10" cols="60" wrap="virtual"></textarea></p><br>
<p><input type="submit" name="submit" value="Send">
<input type="reset" value="Rensa">
</p>
</form>
</body>
</html>
Men frågan är ju; lagrar du verkligen värdena i sessionsvariabler? I så fall, var gör du det (och varför)?
Om värdena kommer från formuläret endast så är de ju inte lagrade i sessionsvariabler, och då har det ju ingen som helst betydelse för den sakens skull att du kör session_start() överst på mottagande sida.
vad hade du som tips att man skulle skriva annars?
@nders skrev:
Ska du inte hämta dem med $_GET från formuläret?
Antingen har dina värden aldrig lagrats i sessionen, eller så misslyckas hämtning från sessionen.
Lägg följande allra överst i dina filer, före session_start():
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /contact.php on line 6
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /contact.php on line 6
dem felen fick jag. var i koden skulle jag skriva $_get för att få det att funka istället?
ska jag ändra o skriva $_post istället dit det ska sen då?
Om det inte är sessionsvariabler du använder, byt då $_SESSION mot $_POST.
Du använder alltså $_POST för att hämta värden du skickat från ett formulär med metoden POST.
Jag skrev $_GET i tidigare inlägg, det var en felskrivning. Ber om ursäkt, $_POST ska det alltså vara.
Är bara lite osäker på vart jag ska skriva $_post
<b>Din Email:</b><br>
<input type=text name="email" size="45" value="<? $_post ?>">
sen dit det ska skriva '.$_GET['email'].' eller är jag helt ute och cycklar?
är det annars nått mer jag ska göra?
Du kör Vätternrundan på hoj ja. :)
I stället för $_SESSION['realname'] och $_SESSION['message'] i koden där du skapar mailet ska du använda $_POST['realname'] och $_POST['message'].
Nu kan jag inte vara tydligare...
nog för jag bor där vätternrundan startar men klarar mej utan den :)
Ja okej den biten har jag förstått :)
men om jag skriver post där måste jag okså skriva $_get i formuläret så den vet vad den ska hämta. det är den biten jag är osäker på var i repskive bit i formuläret $_get ska stå ska det stå under value="<? $_post ?>"> där?
men om jag skriver post där måste jag okså skriva $_get i formuläret så den vet vad den ska hämta.
Nej, gör inga andra ändringar. Dina inputfält heter ju realname och message, så det enda du behöver göra för att ta emot värdena är att använda $_POST i ditt php-dokument där du tar emot värdena.
Iceyes skrev:
Den skickar medelandet precis som vanligt
adressfälet har precis samma adress som innan .php?done=1<? session_start() ; if(isset($_GET['done'])) { echo '<center>Vi tackar för ditt meddelande '.$_SESSION['realname'].'<br /> Följande meddelande:<em><br /> <br /> '.$_SESSION['message'].'</em><br /><br /> har leverats</center>'; unset($_SESSION['realname'], $_SESSION['message']); } ?>den skriver endast så här ovastett va man skriver i formuläret:
Vi tackar för ditt meddelande
Följande meddelande:har leverats
Första frågan jag ställer är
- Hur ser sendmail.php ut?
- Vilken fil är innehåller denna kod
<?
session_start() ;
if(isset($_GET['done'])) {
echo '<center>Vi tackar för ditt meddelande '.$_SESSION['realname'].'<br />
Följande meddelande:<em><br />
<br />
'.$_SESSION['message'].'</em><br /><br />
har leverats</center>';
unset($_SESSION['realname'], $_SESSION['message']);
}
?>
Läste lite snabbt igenom resten av tråden, om sendmail.php innehåller ovanstående php-kod plus mailfunktionen, så vore enklast att plocka bort $_SESSION[] och ersätta med $_POST[], annars hoppas jag att du skappat sessionerna realname och message i sendmail.php och sedan skickat (ev. laddat om sidan) vidare till en annan sida som visar de du vill att ska visas.
Enklast är att använda $_POST[] eller $_GET[] beroende på vad du satt i formulärmetoden, och presentera de personen har skickat via mailfunktionen direkt i samma sida som mailfunktionen finns.
Mvh fredde
Aha, okej så det är inte mer avancerat än så :)
har jag nån som helst användigt för koden
<? session_start() ; ?>
då?
Iceyes skrev:
Aha, okej så det är inte mer avancerat än så :)
har jag nån som helst användigt för koden<? session_start() ; ?>då?
Endast om du skall använda sessioner på sidan, annars har du ingen använding för session_start();
Fredde Mannen skrev:
Första frågan jag ställer är
- Hur ser sendmail.php ut?
- Vilken fil är innehåller denna kod<? session_start() ; if(isset($_GET['done'])) { echo '<center>Vi tackar för ditt meddelande '.$_SESSION['realname'].'<br /> Följande meddelande:<em><br /> <br /> '.$_SESSION['message'].'</em><br /><br /> har leverats</center>'; unset($_SESSION['realname'], $_SESSION['message']); } ?>Läste lite snabbt igenom resten av tråden, om sendmail.php innehåller ovanstående php-kod plus mailfunktionen, så vore enklast att plocka bort $_SESSION[] och ersätta med $_POST[], annars hoppas jag att du skappat sessionerna realname och message i sendmail.php och sedan skickat (ev. laddat om sidan) vidare till en annan sida som visar de du vill att ska visas.
Enklast är att använda $_POST[] eller $_GET[] beroende på vad du satt i formulärmetoden, och presentera de personen har skickat via mailfunktionen direkt i samma sida som mailfunktionen finns.
Mvh fredde
<?php
session_start () ;
$email = $_POST['email'] ;
$message = $_POST['message'] ;
mail( "iceyes87@gmail.com", "[$subject]",
$message, "From: {$realname}\r\n" .
"Reply-To: {$email}\r\n" );
$_POST['message'] = $message;
$_POST['realname'] = $realname;
header("Location: /index.php?done=1");
?>
där har du sendmail.php fast nu har jag ändrat från session till post
och här har du formresult.php
<?php
session_start() ;
if(isset($_GET['done'])) {
echo '<center>Vi tackar för ditt meddelande '.$_POST['realname'].'<br />
Följande meddelande:<em><br />
<br />
'.$_POST['message'].'</em><br /><br />
har leverats</center>';
unset($_POST['realname'], $_POST['message']);
}
?>
visserligen verkar den fortfarande vägra skriva ut medelande, nånting jag missat?
Men, då lagrade du ju värdena i sessionsvariabler! Varför sa du inte det från början så hade vi sluppit femton inlägg???
Då är det lika bra du tar tillbaka det du hade från början, så vi kan börja om, alternativt lyssna på Freddes förslag.
Och lade du verkligen Mattes kod absolut överst?
Edit: och eftersom jag inte är någon php-guru så tror jag att jag hoppar av här. Lycka till! :)
Du kommer aldrig på detta sätt att kunna flytta över några variabler från sendmail.php till formresult.php.
Varför skickar du förresten din header("Location ") i sendmail.php till index.php när det är i formresult.php du har din kod ?
Antingen får du
1. Göra din utskrift av meddelandet redan i sendmail.php.
2. Skicka variablerna vidare som GET-variabler.
3. Lägga variablerna i en session innan du skickar vidare.
Väljer du alternativ 3 får du fixa så din session startas i formresult.php.
Där hade du ett felmeddelande om att session_start() inte kunde sättas därför att headers redan skickats till webbläsaren.
Flytta då upp session_start() till allra överst på sidan.
@nders skrev:
Men, då lagrade du ju värdena i sessionsvariabler! Varför sa du inte det från början så hade vi sluppit femton inlägg???
Då är det lika bra du tar tillbaka det du hade från början, så vi kan börja om, alternativt lyssna på Freddes förslag.
Och lade du verkligen Mattes kod absolut överst?
Edit: och eftersom jag inte är någon php-guru så tror jag att jag hoppar av här. Lycka till! :)
Som jag nog tidigare nämt så är jag helt värdelös på php därför jag sitter här på forumet, kan läsa vissa delar och förstå dem till viss del men mycket går ouppklarat
Matte skrev:
Du kommer aldrig på detta sätt att kunna flytta över några variabler från sendmail.php till formresult.php.
Varför skickar du förresten din header("Location ") i sendmail.php till index.php när det är i formresult.php du har din kod ?Antingen får du
1. Göra din utskrift av meddelandet redan i sendmail.php.
2. Skicka variablerna vidare som GET-variabler.
3. Lägga variablerna i en session innan du skickar vidare.Väljer du alternativ 3 får du fixa så din session startas i formresult.php.
Där hade du ett felmeddelande om att session_start() inte kunde sättas därför att headers redan skickats till webbläsaren.
Flytta då upp session_start() till allra överst på sidan.
det känns som alternativ 2 skulle vara lättast. och om det funkar felfritt kanske det skulle vara bäst att testa med det.
men hur skulle jag då gå till väga?