Header location och databas-problem

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Glitch



Medlem i: 934 dagar

Status: Offline



#740929
Inlägg Skrivet: 2016-08-26 13:46      Ämne: Header location och databas-problem Citera

Jag klickar på en länk http://www.ensida.se/sida.php?id=1 där jag hämtar från en databas med $_GET['id'] och skriver ut på sidan.

Sedan kör jag en header location på samma sida, alltså jag gör en refresh på sidan helt enkelt, hur får jag då med $_GET['id'] igen så jag kan hämta samma data en gång till?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4913 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740930
Inlägg Skrivet: 2016-08-26 14:06      Ämne: Citera

Skicka med det värdet du vill ha med i din URL i header location.
Typ;
header('Location: http://www.example.com/sida.php?id=blablalb');
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Glitch



Medlem i: 934 dagar

Status: Offline



#740931
Inlägg Skrivet: 2016-08-26 15:06      Ämne: Citera

Kan man få det mer dynamiskt?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4913 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740932
Inlägg Skrivet: 2016-08-26 15:14      Ämne: Citera

Absolut, du bygger ju din URL i phpkoden som vilken textsträng som helst.

$url = "http://www.test.com/sida.php?id=".$_GET['tjoho'];
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Glitch



Medlem i: 934 dagar

Status: Offline



#740933
Inlägg Skrivet: 2016-08-26 15:18      Ämne: Citera

Jag ska försöka förklara vad jag vill åstadkomma.
Jag har en navbar som jag inkluderar på alla mina sidor.
I navbaren har jag en inloggningsfunktion.

Som det är nu omdirigeras användaren alltid till index.php vid inloggning.
Det jag vill ha är att användaren blir kvar på samma sida som användaren loggar in på.

Så långt har jag faktiskt lyckas. Problem uppstår när det finns en query-string.
Query-string blir tom när jag gör en refresh på sidan och ingen data kan hämtas från databasen.

Jag kan ta med lite kod också. Smile

PHP:
1:
 if(isset($_GET['id']))
2:
{
3:
   //hämtar data från databasen
4:
}
5:
 
6:
//Om inloggad
7:
$_SESSION['url'] = $_SERVER['REQUEST_URI'];
8:
$url $_SESSION['url'];
9:
header('Location:'.$url); 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4913 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740934
Inlägg Skrivet: 2016-08-26 15:36      Ämne: Citera

Och du blir inte omdirigerad till det värde som sätts i $url?
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Glitch



Medlem i: 934 dagar

Status: Offline



#740935
Inlägg Skrivet: 2016-08-26 15:40      Ämne: Citera

Jag blir omdirigerad och inloggad men det hämtas ingen data från databasen eftersom id blir tomt.

Jag hamnar här http://www.ensida.se/sida.php

Jag får felmeddelandet Notice: undifined index id, typ
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4913 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740937
Inlägg Skrivet: 2016-08-27 09:22      Ämne: Citera

Om du skriver ut $URL istället för att köra en header, vad får du för värde då?
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Glitch



Medlem i: 934 dagar

Status: Offline



#740938
Inlägg Skrivet: 2016-08-27 09:36      Ämne: Citera

När jag klickar på länken http://www.minsida.se/sida?id=1
blir värdet /sida?id=1

Sedan loggar jag in och då blir värdet /sida.php
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Glitch



Medlem i: 934 dagar

Status: Offline



#740942
Inlägg Skrivet: 2016-08-28 11:51      Ämne: Citera

Det fungerar om jag kör $_SERVER['HTTP_REFERER'] istället för $_SERVER['REQUEST_URI'].

Är det en bra metod?

Undrar även vad jag ska tänka på säkerhetsmässigt.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4654 dagar
Från: Tavesta
Status: Offline



#740943
Inlägget är accepterad som det rätta svaret Skrivet: 2016-08-28 12:55      Ämne: Citera

$_SERVER['HTTP_REFERER'] talar om vilken sida som länkade till sidans som laddas, och är något som kan manipuleras av besökaren och i viss mån av tredje part, eller i vissa fall saknas helt.

I ditt fall skulle jag nog tycka det vore bättre att hitta varför querysträngen faller bort.
Jag skulle gissa att det är ditt inloggningsformulär som inte tar hand om den biten.
En lösning som borde kunna fungera, oavsett hur det formuläret ser ut, är att lägga querysträngen i en dold input, och sedan lägga tillbaka den i url:en när sidan skall laddas om.

Jag kan omöjligt ge en heltäckande bild över vilka säkerhetshot du måste tänka på, men här är två:
När du sätter ihop en url på egen hand kan det vara viktigt att dess delar escapeas korrekt.
Url:er som manipuleras av tredje part kan i samband med omdirigering leda till att besökaren skickas till en annan webbplats utan att märka det.
Om du måste använda sådana url-er är det bra att hålla ett extra öga på dessa. Framför allt domännamnsdelen.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Glitch



Medlem i: 934 dagar

Status: Offline



#740944
Inlägg Skrivet: 2016-08-29 11:27      Ämne: Citera

Det fungerar bra att lägga url:en i en hidden field.
Så här har jag gjort $url = $_SERVER['REQUEST_URI'];

Sedan kör jag $url i en hidden field.

Några frågor kring detta. Url:en visas i klartext när man kollar källkoden, har det någon beytdelse?

Ska jag köra en htmlentites eller någon annan funktion på $url?

Hittills kör jag med form action="<php echo htmlentites($_SERVER['PHP_SELF'])"?> och sedan kollar jag att request method är lika med post.

Är det tillräckligt ur säkerhetssynpunkt?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4654 dagar
Från: Tavesta
Status: Offline



#740945
Inlägget är accepterad som det rätta svaret Skrivet: 2016-08-29 13:47      Ämne: Citera

Det är rätt att använda htmlentities i det här fallet, men htmlspecialchars ger snyggare kod, och har inte vissa biverkningar som htmlentities kan ha.

Men jag tror att problemet är att du stoppar $_SERVER['PHP_SELF'] i action-attributet. Den innehåller inte querysträngen.
Prova att köra med tomt actionattribut istället (action="").

Att besökaren ser url-en är inget problem, eftersom den inte innehåller några hemligheter. Men du bör tänka på att besökaren också kan ändra den. Men den möjligheten finns i många andra sammanhang också.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Glitch



Medlem i: 934 dagar

Status: Offline



#740946
Inlägg Skrivet: 2016-08-29 15:03      Ämne: Citera

Det fungerar som det ska än så länge i alla fall.
Får återkomma i fall jag stöter på något mer problem framöver.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Glitch



Medlem i: 934 dagar

Status: Offline



#740948
Inlägg Skrivet: 2016-08-30 08:55      Ämne: Citera

Du hade rätt. Det var PHP_SELF som var problemet.
Det funkar med båda sätten som du beskrev så du får rätt svar för båda.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic