[PHP] Header redirect werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
Ik heb dit script waar de redirect wel werkt:

<?php
$titel=mysql_real_escape_string($_GET['titel']);
$naam=mysql_real_escape_string($_GET['naam']);
$type=mysql_real_escape_string($_GET['type']);

$query="INSERT INTO aanvragen ( naam, titel, type)
VALUES
('$naam','$titel','$type')";

$result= mysql_query($query) or die(mysql_error());

header ("Location: index.php");
?>

En dit script waar de redirect niet werkt

<?php
$nr=mysql_real_escape_string($_GET['nr']);
$titel=mysql_real_escape_string($_GET['titel']);
$jaar=mysql_real_escape_string($_GET['jaar']);
$genre=mysql_real_escape_string($_GET['genre']);
$gezien=mysql_real_escape_string($_GET['gezien']);
$linksite=mysql_real_escape_string($_GET['linksite']);
$type=mysql_real_escape_string($_GET['type']);

$query="INSERT INTO film ( nr, title, year, genre, gezien, linksite, type)
VALUES
('$nr','$titel','$jaar','$genre','$gezien','$linksite','$type')";

$result= mysql_query($query) or die(mysql_error());
header ("Location: index.php");

?>

Wat doe ik hier verkeerd, iemand enig idee?

Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 15:07
Misschien geeft je SQL-query een error en doet ie daarom die();? Wat heb je al gedaan om te debuggen?

omniscale.nl


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Zet foutmeldingen aan en kom erachter dat er waarschijnlijk al iets is geoutput voordat je de header wegschrijft. :) Die redirect moet absoluut zijn, dus ze kloppen beide niet.
offtopic:
Gebruik [php]-tags bij het posten.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
posttoast schreef op zaterdag 03 oktober 2009 @ 15:10:
Misschien geeft je SQL-query een error en doet ie daarom die();? Wat heb je al gedaan om te debuggen?
Ik heb de code van degene die wel werkt gewoon goed nagelopen, ook het html form wat er aanvast zit. Maar ik snap niet waarom iets niet werkt wat exact hetzelfde is.

Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
pedorus schreef op zaterdag 03 oktober 2009 @ 15:12:
Zet foutmeldingen aan en kom erachter dat er waarschijnlijk al iets is geoutput voordat je de header wegschrijft. :) Die redirect moet absoluut zijn, dus ze kloppen beide niet.
offtopic:
Gebruik [php]-tags bij het posten.
Maar er is lijkt mij geen output aangezien dit het gehele script is. En waarom zou de eerste wel werken en de 2de niet? (dat heeft verder toch niet met dat absoluut verhaal te maken)

Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 15:07
bananzaa schreef op zaterdag 03 oktober 2009 @ 15:13:
[...]


Ik heb de code van degene die wel werkt gewoon goed nagelopen, ook het html form wat er aanvast zit. Maar ik snap niet waarom iets niet werkt wat exact hetzelfde is.
Het is niet exact hetzelfde, want je doet een andere SQL-query.

omniscale.nl


Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
posttoast schreef op zaterdag 03 oktober 2009 @ 15:15:
[...]

Het is niet exact hetzelfde, want je doet een andere SQL-query.
Ja oke dat wel, maar bij beide doe ik een invoer naar de database dat moet toch weinig uit maken?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Zet eens dit bovenaan je script(s):

PHP:
1
2
3
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);


En probeer het dan nog eens.

Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 15:07
bananzaa schreef op zaterdag 03 oktober 2009 @ 15:17:
[...]


Ja oke dat wel, maar bij beide doe ik een invoer naar de database dat moet toch weinig uit maken?
Nou, blijkbaar wel dus. Je doet een die(); als er een error optreedt en het lijkt erop dat dat hier gebeurt.

omniscale.nl


Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
HuHu schreef op zaterdag 03 oktober 2009 @ 15:18:
Zet eens dit bovenaan je script(s):

PHP:
1
2
3
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);


En probeer het dan nog eens.
Krijg deze error!

Warning: Cannot modify header information - headers already sent by

Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 15:07
bananzaa schreef op zaterdag 03 oktober 2009 @ 15:21:
[...]


Krijg deze error!

Warning: Cannot modify header information - headers already sent by
Er wordt dus al content gestuurd voordat je header(); doet. En ik vermoed dat die SQL query een foutmelding geeft.

omniscale.nl


Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
posttoast schreef op zaterdag 03 oktober 2009 @ 15:22:
[...]

Er wordt dus al content gestuurd voordat je header(); doet. En ik vermoed dat die SQL query een foutmelding geeft.
Ja aangezien de foutmelding gebeurt dat ook.
Enig idee wat er dan verkeerd aan mijn query is? Of hoe ik kan laten zien wat er fout gaat?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
bananzaa schreef op zaterdag 03 oktober 2009 @ 15:21:
[...]


Krijg deze error!

Warning: Cannot modify header information - headers already sent by
Haal in al je bestanden de laatste ?> weg. Kijk of de <?php altijd als allereerste in je document staat.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ow... post eens de hele foutmelding, want er hoort nog meer tekst na "Warning: Cannot modify header information - headers already sent by".

De headers zijn reeds verzonden door ... ??? Na die by moet nog wat komen.

Acties:
  • 0 Henk 'm!

  • bananzaa
  • Registratie: Augustus 2009
  • Laatst online: 23-07 22:53
Opgelost: het was waarschijnlijk een enter of spatie in mijn script voor de PHP code, of misschien erna. Iedereen bedankt voor de hulp

Acties:
  • 0 Henk 'm!

  • E-Vix
  • Registratie: Juni 2000
  • Laatst online: 14:25

E-Vix

Nu met sneeuw!

bananzaa schreef op zaterdag 03 oktober 2009 @ 15:25:
[...]

Ja aangezien de foutmelding gebeurt dat ook.
Enig idee wat er dan verkeerd aan mijn query is? Of hoe ik kan laten zien wat er fout gaat?
Begin eens met een echo van je SQL. Misschien staat er iets vreemds in een van je variabelen.
Daarna kan je je querry in phpMyAdmin proberen. Dan krijg je misschien een idee wat er fout gaat.

Failed opening '/home/users/7942/signature.inc' for inclusion (include_path='.:') in /home/www/got/userstats.php on line 25


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Goede tip: voer altijd een die(); uit na een header location. Als een browser je location zou negeren dan krijgt ie niet nog output te zien die wellicht verborgen moet blijven.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Lees je trouwens ook nog even in op SQL injection.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Altijd leuk om te roepen, maar hier escapet ts toch echt wel alles hoor. ;)

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

TS moet wel oppassen met namen van kolommen i.v.m. reserved names.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Voutloos schreef op zondag 04 oktober 2009 @ 14:50:
Altijd leuk om te roepen, maar hier escapet ts toch echt wel alles hoor. ;)
Je kan er nog genoeg leuke dingen mee doen. Weliswaar weinig aan de database, maar de site kan nog enigsinds verklooid worden.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 15:07
MueR schreef op zondag 04 oktober 2009 @ 18:28:
[...]

Je kan er nog genoeg leuke dingen mee doen. Weliswaar weinig aan de database, maar de site kan nog enigsinds verklooid worden.
Verklaar je nader :)

omniscale.nl


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op zondag 04 oktober 2009 @ 15:24:
TS moet wel oppassen met namen van kolommen i.v.m. reserved names.
Die quote ik nog ff omdat het erg treffend is :)

Acties:
  • 0 Henk 'm!

  • mimic
  • Registratie: Februari 2002
  • Niet online

mimic

O ja joh?

Je kunt ook met ob_start() en ob_end_flush() je pagina alvast laten opbouwen. Als hij dan op het eind een redirect tegenkomt, zal hij deze uitvoeren.

PHP:
1
2
3
4
5
6
7
8
9
<?php
ob_start();

print "lalalalal";

header("location: http://google.nl");

ob_end_flush();
?>

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Trouwens, inserten door middel van GET is niet idempotent. GET is om data op te vragen, POST is om data op te slaan.

Daarnaast is rücksichtlos alles escapen wat er binnenkomt ook niet de way-to-go, je zou ook even wat controles moeten toepassen om te kijken of de invoer wel binnen het bereik past. Daarnaast zou ik een ID (nr) niet laten inserten, maar juist laten genereren door een serial/auto_increment, behalve als het bijvoorbeeld een IMDB-ID is, dan zou ik de kolom ook zo noemen. Gewoon voor de duidelijkheid :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

mimic schreef op maandag 05 oktober 2009 @ 14:10:
Je kunt ook met ob_start() en ob_end_flush() je pagina alvast laten opbouwen. Als hij dan op het eind een redirect tegenkomt, zal hij deze uitvoeren.

PHP:
1
2
3
4
5
6
7
8
9
<?php
ob_start();

print "lalalalal";

header("location: http://google.nl");

ob_end_flush();
?>
A) dat is gewoon bad design
B) dat had het probleem van de topicstarter niet geholpen.

[ Voor 69% gewijzigd door .oisyn op 05-10-2009 14:18 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • A-Tray
  • Registratie: Januari 2001
  • Laatst online: 01-06 16:53
Ik kan het niet laten.

PHP:
1
2
foreach ($_GET as $key => $val)
    ${$key} = mysql_real_escape_string($val);


By the way, ik dacht eerst dat het een AJAX script was. Totdat ik die header() zag, dus :)

"Dance like the photo's not being tagged, Love like you've never been unfriended, Tweet like nobody's following."


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
A-Tray schreef op maandag 05 oktober 2009 @ 20:01:
Ik kan het niet laten.

PHP:
1
2
foreach ($_GET as $key => $val)
    ${$key} = mysql_real_escape_string($val);


By the way, ik dacht eerst dat het een AJAX script was. Totdat ik die header() zag, dus :)
WTH is een AJAX script? En jouw code heeft weer een heel andere shitload aan problemen waar we hier weer uren over zouden kunnen bakkeleien zoals of het wel of niet netjes is om variabele variabelen te gebruiken en dat je he-le-maal niet zomaar alles wil escapen wat binnenkomt. Dat doe je pas op 't moment dat 't de DB in moet.

[ Voor 16% gewijzigd door RobIII op 05-10-2009 20:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 17-09 20:43
A-Tray schreef op maandag 05 oktober 2009 @ 20:01:
Ik kan het niet laten.

PHP:
1
2
foreach ($_GET as $key => $val)
    ${$key} = mysql_real_escape_string($val);


By the way, ik dacht eerst dat het een AJAX script was. Totdat ik die header() zag, dus :)
Waarom niet gewoon een array_map :?

Acties:
  • 0 Henk 'm!

Verwijderd

A-Tray schreef op maandag 05 oktober 2009 @ 20:01:
Ik kan het niet laten.

PHP:
1
2
foreach ($_GET as $key => $val)
    ${$key} = mysql_real_escape_string($val);


By the way, ik dacht eerst dat het een AJAX script was. Totdat ik die header() zag, dus :)
Had het nou toch maar gelaten.. :/

Post je dat nou serieus als oplossing? Het is ongeveer hetzelfde als register_globals aanzetten, met alle bijkomende beveiligingslekken hiervan. :N

Crosspost? Past perfect in: [alg] Slechtste programmeervoorbeelden deel 4. ;)

[ Voor 9% gewijzigd door Verwijderd op 05-10-2009 20:36 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
RedHat schreef op maandag 05 oktober 2009 @ 20:05:
[...]

Waarom niet gewoon een array_map :?
Dat is nog wel 't minster probleem. Je wil gewoonweg helemaal niet alles escaped hebben. Dat wil (en doe) je pas op 't moment dat 't in een query verdwijnt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 05 oktober 2009 @ 20:32:
[...]

Had het nou toch maar gelaten.. :/

Post je dat nou serieus als oplossing? Het is ongeveer hetzelfde als register_globals aanzetten, met alle bijkomende beveiligingslekken hiervan. :N
Het zou al beter zijn als hij $_GET[$key] zou schrijven in plaats van ${$key}.

Bovendien is het een dubbel slechte oplossing, aangezien het ook nog eens een volautomatische magic quotes is, zelfs als die uit staan. En zoals Rob boven mij al zegt: dat is ranzig en moet je helemaal niet willen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1