Avatar billede dennism Nybegynder
03. juli 2003 - 12:42 Der er 9 kommentarer og
1 løsning

PHP - Skift side

Jeg har f.eks. et forum, hvor man selvfølgelig kan skrive indlæg osv.!
Jeg har lavet sådan at når indlæget er skrevet, så kører jeg en: <script>location.href='forum.php=traad=$traad';</script>

Så bliver brugeren smidt tilbage til tråden, når indlæget er indsat i databasen. Dette har jeg gjort, for at brugeren ikke bare kan trykke <opdater> og så bliver indlæget indsat igen!
Det har så også virket fint, men hvis nu man trykker <tilbage> og så bliver indlæget indsat igen! Hvordan kan jeg forhindre dette?
Ved at der findes en metode, eftersom det f.eks. ikke er muligt her på eksperten!

Undskyld den dårlige overskrift, men kunne ikke lige finde en passende titel!
Avatar billede ahv Nybegynder
03. juli 2003 - 12:43 #1
Hjælper det hvis du sender dem videre med en header?

header("Location: forum.php=traad=$traad");
Avatar billede ahv Nybegynder
03. juli 2003 - 12:44 #2
header("Location: forum.php?traad=$traad");
Avatar billede dennism Nybegynder
03. juli 2003 - 12:46 #3
Skal "header" ikke være i toppen af siden?
Avatar billede ahv Nybegynder
03. juli 2003 - 12:47 #4
Bare før output til browseren.
Avatar billede dennism Nybegynder
03. juli 2003 - 12:57 #5
Oki :) Så skal jeg lige ha' lavet én del om i mit system!.. Prøver lige, og vender tilbage når jeg har et resultat!
Avatar billede dennism Nybegynder
03. juli 2003 - 13:25 #6
Jeg har nu laver en seperat fil som tester de indtastede data, og indsætter dem til databasen hvis de er korrekte! Filen hedder response.php.
Min form har derfor action på response.php!
Men hvad gør jeg så, hvis der er fejl i de indtastede data, og jeg fejlbeskeden skal printes på siden hvor man indtaster dataene, og ikke i response.php?
Avatar billede dennism Nybegynder
03. juli 2003 - 13:29 #7
Jeg kunns selvfølgelig teste de indtastede data, før de bliver smidt over i response.php:

if (empty($_POST[text])) {
echo "<LI><font color=#FF0000>Du har ikke indtastet nogen besked.</FONT><BR>";
} elseif (strlen($_POST[text]) < 10) {
echo "<LI><font color=#FF0000>Din besked skal være større end 10 tegn.</FONT><BR>";
} else {
$allowed = 1;
}

if ($allowed == 1) {
echo"<script>location.href='response.php?action=gb&userto=$_GET[user]&text=$_POST[text]';</script>";
}

Men jeg synes så det virker lidt åndsvagt at sende en stor varianel ($_POST[text]) via GET!
Avatar billede dennism Nybegynder
03. juli 2003 - 14:26 #8
Hvad mener du!?
Avatar billede sukos Juniormester
03. juli 2003 - 14:44 #9
Bruger selv sessions til at finde ud af om en fejl er der, samt til at sende tilbage.
D.v.s. hvis du bruger en side til visning af de forskellige indlæg, så kan du bruge f.eks.
$_SESSION["back"] = $_SERVER["REQUEST_URI"];

På response.php husker du så at bruge
session_start();

for derefter at bruge:
header("Location:". $_SESSION["back"] ."");

Og er der fejl i brugerinput, kan du sætte en ny session

if(empty($_POST["text"])) {
$_SESSION["error"] = 1;
}

inden en header.
Håber du er med? :O)
Avatar billede ahv Nybegynder
03. juli 2003 - 18:43 #10
Omkring foreach ->

Vi kan bruge foreach når vi har et array, et simpelt eksempel på dette er ->
$error[] = "hej";
$error[] = "med";
$error[] = "";
$error[] = "dig";

Hvis vi nu gerne vil have skrevet alle værdierne ud fra error arrayet kan vi bruge foreach ->
foreach ($error as $name => $value) {
    echo $name." ".$value;
}

Det vi gør her er vi siger for hver værdi i error skal du tage dens navn og dens værdi, vi vælger så at udskrive både navnet og værdien.
Resultatet af denne vil blive ->
0 hej1 med2 3 dig
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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