webForumDet fria alternativet

$message slutar fungera

23 svar · 475 visningar · startad av Iceyes

IceyesMedlem sedan apr. 200592 inlägg
#1

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?

MatteMedlem sedan aug. 20002 975 inlägg
#2

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 ?

IceyesMedlem sedan apr. 200592 inlägg
#3

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

@ndersMedlem sedan juni 200032 969 inlägg
#4

Lagrar du verkligen realname och message i sessionsvariabler? Ska du inte hämta dem med $_GET från formuläret?

mvh

IceyesMedlem sedan apr. 200592 inlägg
#5

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>&Auml;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"> 
&nbsp;
<input type="reset" value="Rensa">
</p>
</form>
</body>
</html>
@ndersMedlem sedan juni 200032 969 inlägg
#6

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?

MatteMedlem sedan aug. 20002 975 inlägg
#7

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");
IceyesMedlem sedan apr. 200592 inlägg
#8

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å?

@ndersMedlem sedan juni 200032 969 inlägg
#9

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.

IceyesMedlem sedan apr. 200592 inlägg
#10

Ä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?

@ndersMedlem sedan juni 200032 969 inlägg
#11

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...

IceyesMedlem sedan apr. 200592 inlägg
#12

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?

@ndersMedlem sedan juni 200032 969 inlägg
#13

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.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#14

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

IceyesMedlem sedan apr. 200592 inlägg
#15

Aha, okej så det är inte mer avancerat än så :)
har jag nån som helst användigt för koden

<? session_start() ; ?>

då?

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#16

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();

IceyesMedlem sedan apr. 200592 inlägg
#17

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?

@ndersMedlem sedan juni 200032 969 inlägg
#18

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! :)

MatteMedlem sedan aug. 20002 975 inlägg
#19

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.

IceyesMedlem sedan apr. 200592 inlägg
#20

@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?

143 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)