Avatar billede claushelth Nybegynder
27. januar 2003 - 21:52 Der er 23 kommentarer og
1 løsning

httpd.conf php med ssi

Hej

Jeg kører en apache server på min xp.

Jeg benytte ssi på alle mine sider (fordi det synes jeg er rigtig smart :-)), men på min side har jeg også en email sender, og den er med php.
Derfor kalder jeg jo siden .php , men den kan ikke indeholde ssi som default.

Kan jeg ikke ændre i min conf fil, eller er der en smartere løsning?

Jeg har forsøgt mig lidt frem uden held, feks:

    #
    # To use server-parsed HTML files
    #
    AddType text/html .shtml .php
    AddHandler server-parsed .shtml .php

vh
Claus
Avatar billede claushelth Nybegynder
27. januar 2003 - 21:58 #1
jeg skal måske går den anden vej rundt, og kalde min fil for .shtml, og så på en eller anden måde tillade php i shtml filerne? Men hvor skal det så gøres...hjælp...jeg er på vildspor!!!
Avatar billede claushelth Nybegynder
27. januar 2003 - 22:33 #2
jeg har forsøgt at kalde min emailside for .shtml, og i den side har jeg inkluderet min php fil, men nu får jeg slet ikke lov til at komme ind på den nye shtml side.
Den skriver at jeg ikke må overføre variabler via POST til denne side.
Jeg har netop brug for at sende variabler til denne side da jeg skal overfører alle de felter som mailen skal udfyldes med...hmmm
Håber der kommer en hjælpende hånd!!!
Avatar billede _darkstar_ Nybegynder
28. januar 2003 - 00:12 #3
SSI er rigtig smart, men det du beskriver ovenfor kan ikke så vidt jeg ved lade sig gøre.

Der er dog nogle andre muligheder. F. eks. kan du bruge PHPs include-funktion. Den gør faktisk det samme.
Avatar billede _darkstar_ Nybegynder
28. januar 2003 - 00:16 #4
Se http://www.php.net/manual/en/function.include.php

Iøvrigt kan du godt lave det sådan at du har en shtml-fil, som genererer noget der bliver brugt i PHP ved i PHP-filen at skrive:

include("http://localhost/stien/til/min-fine-shtml-fil.shtml");

Så evaluerer webserveren dine includes, hvorefter de bliver brugt i php.

Men PAS PÅ DENNE FREMGANGSMÅDE. Der er to problemer:

1) Dine sider bliver langsommere fordi at de skal to gange igennem webserveren.
2) Dine .shtml-filer kommer til at indeholde PHP-kode, som hvemsomhelst kan downloade, hvis de kender URL'en.
Avatar billede claushelth Nybegynder
28. januar 2003 - 06:54 #5
Darkstar -> Takker for en mulighed...men jeg er ikke sikker på at jeg gør det helt rigtig. Jeg har min shtml fil hvor min form nu står i.
Min form bruger POST, og ACTION sender den videre til mit andet shtml dokument, hvor jeg så sender mailen via en:

include 'phptest.php';

Når jeg gør det får jeg denne fejl:
Method Not Allowed
The requested method POST is not allowed for the URL /test/phptestmail.shtml.

Det ser ud som om at når der bliver sendt via POST, så vil den ikke godtage et shtml dokument?

vil du se noget kode?
Jeg kan se din pointe med løsningen, men jeg tror at det må være måden at gøre det på lige nu, da jeg ikke er så godt inde i hvordan jeg ellers bruger mine php funktioner med variabel overførsler.
Avatar billede sukos Juniormester
28. januar 2003 - 13:59 #6
The requested method POST is not allowed for the URL /test/phptestmail.shtml
hmm, hvad står i din httpd.conf omkring det dir du vil afvikle det i?

Men anyway, så bruger jeg selv:
<!--#include virtual="/filnavn.php" -->
for at include en php fil i et shtml dokument
I filnavn.php kan du så include på normal vis med
include("andenfil.php");
Avatar billede claushelth Nybegynder
28. januar 2003 - 14:19 #7
Lige nu bruger jeg GET i stedet...den vil gerne gå igennem til en shtml side.

Jeg er ret meget nybegynder i apache, og derfor er httpd.conf filen stadigvæk lidt uoverskuelig, dog har jeg fået det meste sat op...hmmm, men det er da meget vel her der skal rettes i.

Jeg har prøvet at inkludere php filen på begge måder uden held, men mine alm. inkluderede filer går fint igennem med:
<!--#include virtual="/filnavn.inkl" -->

Hvis jeg bruger include("mailsend.php"); i min shtml-fil så udskriver den bare denne kommando i html'en.
Hvis jeg bruger <!--#include virtual="/filnavn.inkl" --> , så får jeg denne fejl:

Warning: mail() [function.mail]: SMTP server response: 503 Valid RCPT TO must precede DATA in c:\apache\htdocs\test\phptest.php on line 8

I min phptest.php linje 8 udføres mail()funktionen. Man kunne tro at der var sat forkerte argumenter ind eller SMTP ikke var åben, men hvis jeg kalder en php-fil direkte fra min form, så fungere den fint...men så virker mit ssi jo bare ikke :-(

Jeg synes det virker mærkeligt at man ikke kan inkludere noget php med variabler i en shtml side! Umiddelbart ville jeg ikke blive overrasket hvis det er min conf fil der skal rettes...men hvor?
Avatar billede sukos Juniormester
28. januar 2003 - 14:26 #8
Med den sidste måde at include på, er det fordi der er fejl i enten din
1. php kode til afsendelse af en mail
2. Mailadressen EKSISTERER IKKE!

Er det 1., så tjek i php.ini at SMTP er sat korrekt. Brug evt. din internetudbyders SMTP, f.eks. for TDC:

smtp.mail.dk

er det 2., så prøv at indtaste en regulær mailadresse.

Mener du det IKKE er noget af det, så vis noget kode for hvordan du sender en mail! :O)
Avatar billede sukos Juniormester
28. januar 2003 - 14:27 #9
HOV,
<!--#include virtual="/filnavn.inkl" -->

har du defineret i httpd.conf at *.inkl filer skal håndteres af PHP???
Avatar billede claushelth Nybegynder
28. januar 2003 - 14:29 #10
Jeg fandt vist ud af hvad darkstar mente med at indsætte en url til mit ssi på min php-side, og det virker nu...han siger jo godt nok at der nogle ulemper ved det, men det er den bedste løsning jeg har indtil videre.

Hvordan skulle man ellers både bruge de bedste ting fra ssi og php på samme tid (er det den conf fil igen mon?).

Jeg er stadig åben for flere løsninger.
Lige i mit tilfælde sidder jeg med en side hvor jeg vil inkludere en top og bund, og som jeg forstår det er det ved hjælp af ssi. På disse sider vil jeg jo så bruge php, og lige her ser det ud som om der er nogle problemer når der skal overføres varabler...
Avatar billede claushelth Nybegynder
28. januar 2003 - 14:33 #11
når det var ikke meningen at darkstar skulle have dem alle ;-)
Kan jeg ikke smide lidt flere point i dette spørgsmål...jeg vil gerne holde lidt mere gang i den...
Avatar billede sukos Juniormester
28. januar 2003 - 14:34 #12
Du kunne jo blot bruge en
action="phpfil.php" method="post"

som så gør det nødvendige, og derefter redirecter til en "tak.shtml" side
Avatar billede sukos Juniormester
28. januar 2003 - 14:38 #13
ski' vær' mæ 'point!

Men på min egen side, bruger jeg dette i en shtml

<form action="send_mail.php" method="post">


Og send_mail.php ser så'n ud:

<?php
if (isset($_POST['send'])) {
   
mail("sukos@ping.dk", "Mail fra sukos.dk- $_POST[subject]", "Afsendt af $_POST[navn]\nMail: $_POST[email]\nBesked: $_POST[message]", "From:$_POST[email]");
header("Location:sendt.shtml");
exit;
}else{
header("Location:kontakt.shtml");
exit;
}
?>
med andre ord, hvis brugeren har klikket på submit, så sendes en mail, tomt indhold eller ej! :O)
Avatar billede claushelth Nybegynder
28. januar 2003 - 14:40 #14
ahh ja...jeg har ledt efter hvordan man redirecter uden held...
men det er måske også fordi jeg både vil have i pose og sæk...hehe
På den side som vises umiddelbart efter mailen er sendt, vil jeg udskrive den mail + de andre argumenter som brugeren lige har indtastet...hvis den ikke blev sendt får brugere en fejlmeddelse.
Men det er måske muligt at redirecte al afhænigt hvordan det gik med at sende mailen...og kan en shtml side så modtage variablerne fra php filen?
Jeg vil gerne sætte flere point over styr hvis det er!!! :-)

sukos -> Jeg har studeret din www lidt og lidt en fan (mht opsætning af apache), så tak for det. Det er hverken svar 1 eller 2 da den virker fint hvis jeg sender mailen i en alm php fil uden ssi.
Avatar billede claushelth Nybegynder
28. januar 2003 - 14:55 #15
sukos ->det ser nu meget smart ud, men hvad menes der med isset()? Tjekker den om der er tastet noget ind i felterne i formen?
Jeg kan bare se at hvis den ikke er sand så ryger man til formen igen...

Jeg sender lige min redigerede udgave med..(det er lidt af en smøre):

<?php
if (isset($_POST['send']))
{
    $epost_afs = $_REQUEST["epost_afs"];
    $epost_mdt = $_REQUEST["epost_mdt"];
    $subject  = $_REQUEST["subject"];
    $input    = $_REQUEST["input"];

    if(mail("$epost_mdt","$subject","$input","From: $epost_afs\nReply-to: $epost_afs"))
    {
    header("Location:sendt.shtml"); // her ville jeg gerne have overført variablerne med over i shtml-siden
    exit;                // og bekræfte over for brugeren hvad der lige er sendt.
    }
    else
    {
    header("Location:ikkesendt.shtml");
    exit;
    }
}
else
{
    header("Location:kontakt.shtml");
    exit;
}
?>
Avatar billede sukos Juniormester
28. januar 2003 - 14:57 #16
hmm, ja, det er så utestet, men hvis du i starten af den *.shtml som skal vise hvad som er sendt, bruger:
<!--#include virtual="/sessions.php" -->
hvor "sessions.php" blot er
<?php
session_start();
?>


så kan du i den fil som sender mail bruge:

<?php
session_start();


if (isset($_POST['send'])) {
   
$mailme = mail("sukos@ping.dk", "Mail fra sukos.dk- $_POST[subject]", "Afsendt af $_POST[navn]\nMail: $_POST[email]\nBesked: $_POST[message]", "From:$_POST[email]");
    if($mailme !=0) {
$_SESSION['subject'] = htmlentities($_POST['subject']);
$_SESSION['navn'] = htmlentities($_POST['navn']);
$_SESSION['besked'] = htmlentities($_POST['besked']);
$_SESSION['email'] = htmlentities($_POST['email']);
header("Location:sendt.shtml");
exit;
      }else{
//Mail er ikke afsendt, så en session fejl sættes
$_SESSION['fejl'] = 1;
header("Location:sendt.shtml");
    }
//Der er ikke klikket på submit
}else{
header("Location:kontakt.shtml");
exit;
}
?>

På din "sendt.shtml" kan du jo så bruge en include for at tjekke hvilke sessions som er sat, og vise indhold efter det.

Er som sagt utestet! :O)
Avatar billede sukos Juniormester
28. januar 2003 - 14:58 #17
isset() er for at tjekke om var'en rent faktisk eksisterer
Avatar billede claushelth Nybegynder
28. januar 2003 - 15:00 #18
ok...prøver lige lidt...og vender tilbage...helst med en success-historie :-)
Avatar billede claushelth Nybegynder
28. januar 2003 - 15:15 #19
Det virker i hvert fald med at redirecte. Jeg har endnu ikke prøvet at overføre variablene...næste skridt. Men jeg blev nød til at fjerne isset()funktionen? Forstår den ikke helt. Kan ikke se hvordan den ikke skulle være sand?
Jeg har kodet noget c og c++ og kan kode lidt den vej, men php er meget nyt for mig, så du må undskylde hvis jeg spørger dumt...
Har kigget på php.net men kan ikke lige se hvad det er isset() gør. (tjekker om der er noget i alle variabler...?)

<?php
/*if (isset($_POST['send']))
{*/
    $epost_afs = $_POST["epost_afs"];
    $epost_mdt = $_POST["epost_mdt"];
    $subject  = $_POST["subject"];
    $input    = $_POST["input"];

    if(mail("$epost_mdt","$subject","$input","From: $epost_afs\nReply-to: $epost_afs"))
    {
    header("Location:afsendtmail.shtml");
    exit;               
    }
    else
    {
    header("Location:afsendtmailfejl.shtml");
    exit;
    }
/*
}
else
{
    header("Location:sendmail.shtml");
    exit;
}*/
?>
Avatar billede sukos Juniormester
28. januar 2003 - 15:27 #20
ja, det kommer så an på hvordan php.ini er sat op!
Vil tro at i de fleste tilfælde, behøver du ikke bruge isset(), men du kan kun vinde på det i længden, hvis du laver alle dine koder ud fra det!
Avatar billede sukos Juniormester
28. januar 2003 - 15:52 #21
Avatar billede claushelth Nybegynder
28. januar 2003 - 16:05 #22
mange tak for hjælpen end til videre...

Jeg har problemer med den session_start();
får fejl:

Warning: session_start() [function.session-start]: open(/tmp\sess_37c648c82065bb56b2cafbd122aedd08, O_RDWR) failed: No such file or directory (2) in c:\apache\htdocs\test\mail2.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\apache\htdocs\test\mail2.php:2) in c:\apache\htdocs\test\mail2.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\test\mail2.php:2) in c:\apache\htdocs\test\mail2.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\test\mail2.php:2) in c:\apache\htdocs\test\mail2.php on line 17

Warning: Unknown(): open(/tmp\sess_37c648c82065bb56b2cafbd122aedd08, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

som om jeg mangler at aktivere noget for at bruge funktionen.

Jeg starter et nyt spm. under php

ps. men når den er der så har jeg min 100% løsning + lært en masse nyt om php...
;-)
Avatar billede claushelth Nybegynder
28. januar 2003 - 17:08 #23
Mange mange tak...hehe så kører og virker det lækkert. Det var lige sådan en løsning jeg efterlyste i starten.

Jeg fik løst det med den funktion. Inde i php.ini i windows var session sat op til at blive gemt i tmp det kunne den bestemt ikke lide så jeg oprettede min egen mappe i apache til sessions...takker mange gange. (Hvis du vil have point må du bare sige til...så er jeg klar..så længe jeg har nogle..hehe ;-))
Avatar billede sukos Juniormester
29. januar 2003 - 16:01 #24
point er ikke nødvendige! :O)

(selvom jeg lige har opdaget jeg har pro-medlemskab, netop p.g.a. point! :O] )
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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