Toon posts:

[php] Slim om header(); te gebruiken na...?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een forum te maken en het is wel zo relaxed om na het posten van een Topic op dat forum, gelijk naar het Nieuwe Topic te worden gestuurd. En dit dus met de functie header(); dus:
PHP:
1
2
3
4
5
6
7
8
9
<?
if($submit &amp;&amp; $error != "error") {

// query, selecteer laatste id + 1

header("location: lees.php?id=$nieuw_id");

}
?>

Maar is dit wel slim? Of kan ik beter een timeout 'doorstuur' javascriptje gebruiken?

Ik vraag me iig af of er geen timeout nodig is voor bijv. de DB en of dit geen data of weet ik veel vreet.

Alvast bedankt.

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ik zou een javascriptje gebruiken, dan kan je nog even een berichtje plaatsen van : "Je ding is geplaatst, je wordt doorgestuurd"

Verwijderd

timeout is niet nodig, zodra je de rest van de pagina ziet, staat het in de db, behalve als je foutmeldingen hebt onderdrukt en andere uitzonderingen.
verder is het wel zo dat als je meteen doorstuurt de db zwaarder belast wordt, maar dat is maar zo klein dat het eigenlijk niet de moeite waard is. Je kunt dus eigenlijk meteen doorsturen...

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-09 14:29
Als het kan, gebruik dan altijd een serverside script: in dit geval dus de header-function in het php-script.

Waarom? Simpelweg omdat niet alle browsers JavaScript ondersteunen (ok, zijn er tegenwoordig maar erg weinig) en sommige mensen JS uit hebben staan.

Verwijderd

Topicstarter
Ik vind het zelf ook nog iig wel een stuk fijner om gelijk naar het bestemde nieuwe topic toe te gaan, heeft iemand daar nog een mening over?

  • Crazy D
  • Registratie: Augustus 2000
  • Nu online

Crazy D

I think we should take a look.

Ik vind het hier wel handig dat er een melding komt. Ik wil niet altijd naar het topic terug als ik gepost heb, dus hoeft die pagine wat mij betreft niet te laden. En de klik hier link werkt ook altijd nog als het wachten te lang duurt.

Exact expert nodig?


Verwijderd

Topicstarter
Mjah, kan ik me iets bij voorstellen...

Ik denk dat ik er maar gewoon een optie van maken in het Profiel, zodat de gebruiker kan kiezen of ie een timeout wilt of gewoon gelijk door gestuurd wil worden.

Bedankt voor de reacties :)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
mwah, ik had het eerst ook, maar als je dan op f5 rost, plaatst hij de reply nog een keer..

Verwijderd

Topicstarter
Op maandag 25 februari 2002 19:42 schreef Nielsz het volgende:
mwah, ik had het eerst ook, maar als je dan op f5 rost, plaatst hij de reply nog een keer..
Das geen probleem, das enkel een kwestie van beveiligen...

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 25 februari 2002 19:47 schreef Markuz het volgende:

[..]

Das geen probleem, das enkel een kwestie van beveiligen...
Ja, kan je elke pageview bekijken of de reply al is geplaatst, dat is lekker.

Verwijderd

Ooit gehoord van een cookie plaatsen met topic id / replay id en de tijd ? EN dan cookie laten staan voor 5 minbijv. is kromme maatregel weet het.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 25 februari 2002 20:06 schreef Rats het volgende:
Ooit gehoord van een cookie plaatsen met topic id / replay id en de tijd ? EN dan cookie laten staan voor 5 minbijv. is kromme maatregel weet het.
Dan is een betere oplossing het in een session douwen.

Verwijderd

Topicstarter
Op maandag 25 februari 2002 20:10 schreef Nielsz het volgende:

[..]

Dan is een betere oplossing het in een session douwen.
De veiligste is een unieke sleutel te maken, in de DB proppen + timestamp, meegeven met het formulier (of misschien wel gewoon registreren in een sessie, maar als er een foute sleutel wordt meegegeven zal er toch "ERROR!" te komen staan >:)), checken of timestamp - 600 (oid) wel groter is dan de timestamp in de db, zoja, posten maar en deleten die hap, zo nee en/of bestaat de sleutel niet: "ERROR!"

De beste en veiligste manier die ik op dit moment ken.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 25 februari 2002 20:13 schreef Markuz het een heel verhaal
Ja, of ff een simpel en snel clientside geval bouwen.

Verwijderd

Topicstarter
Op maandag 25 februari 2002 20:14 schreef Nielsz het volgende:

[..]

Ja, of ff een simpel en snel clientside geval bouwen.
Dat maakt inprincipe niet veel uit, ik denk dat je toch beter op veiligheid kunt spelen dan op 1 honderdste van een sec.

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Aanvulling:
Na een POST request mag er geen 302 Redirect header worden gestuurd volgens de HTTP standaard, tenzij de pagina ECHT verplaatst is. Browsers die zich echt aan de standaarden houden (nee, niet mozilla) die gaan anders de request nog een keer sturen naar het redirect adres. Maar dat zijn de standaarden.....

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Als beveiliging gewoon controleren of er de laatste (5*60) seconden een bericht is geplaatst met zelfde titel + contents????

Verwijderd

Topicstarter
Op maandag 25 februari 2002 21:48 schreef dev-null het volgende:
Als beveiliging gewoon controleren of er de laatste (5*60) seconden een bericht is geplaatst met zelfde titel + contents????
Uiterst onbetrouwbaar er zijn namelijk (gemakkelijk te maken) scripts en progjes waarmee je simpel een telkens varierende input kunt submitten via een formulier.

Verwijderd

Het ligt er echt aan wat je wilt.

Wil je zoiets als hier op tweakers van je bericht is geplaats je wordt doorgestuurd?
-Gebruik dan een javascript redirect.

Zijn de post engine en de forum show engine een het het zelfde bestaan?
-Laat dan meteen de nieuwe posting zien zonder header(location)

Zijn de post enigne en forum show engine verschillende bestanden?
-Gerbuik dan header(location)

Verwijderd

Als je dat wilt zou ik het zo doen:
PHP:
1
2
3
4
5
6
7
8
<?
if($submit &amp;&amp; $error != "error") 
{
      $id = mysql_insert_id();
      header("location: lees.php?id=$id");
      exit();
}
?>
Pagina: 1