[php] Pagina geeft 404-a-like pagina bij if ($url)

Pagina: 1
Acties:

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Vage titel... maar is een beetje moeilijk uit te leggen..

Het probleem is dus dat ik in een 404 wil afvangen wat de bezoeker heeft willen doen, dat lukt.

Nu wil ik als de bezoeker een bepaald woord intypte hem doorsturen naar een andere site.

Daar zit het probleem, ik doe dat met dit stukje code:
PHP:
1
<?$site = substr($REQUEST_URI, 1);$sql = mysql_query("SELECT url FROM sites WHERE forwarding LIKE '$site'");$row = mysql_fetch_array($sql);$url = $row["url"];if ($url){?>blaaaaaaaaaaaaaaaaaaaaaaaat<?}if (!$url){include("$DOCUMENT_ROOT/aaa_boven.php");?>  <center>  <p>  <font class="kop">  Error 404  </font>?>

Als de URL dus bestaat en de code van if ($url) dus uitgevoerd moet worden krijg ik een soort 404 pagina op mijn scherm, zo'n standaard internet geval.

Als een URL niet bestaat krijg ik gewoon de Error 404 foutmelding die in mijn php pagina staat, dus dat is wel goed.

Ik weet niet hoe ik dit op moet lossen en waarom ik die standaard 404-a-like pagina krijg.

(PHP 4.1.2)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Grum
  • Registratie: Juni 2001
  • Niet online
http://www.e-gineer.com/articles/php-hackers-paradise-revisited.phtml

en dan eventjes naar 'Know Your Data' doorkarren :)

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 23-08 13:31

Tjark

DON'T PANIC

doe eens voor je 1e if(url) even een echo van die url. Komt er wel iets uit je query? zo niet -> dan zal if($url) ook niet waar zijn.

2e:
PHP:
1
<?if($bla) {  /iets}if(!$bla) {  //anders}?>

schrijf je over het algemeen netter als
PHP:
1
<?if($bla) {  //iets} else {  //anders}?>

verder zou het (denk ik) netter zijn om de check van die if uit te voeren op het resultaat van de query (dus of de query wel of niet is geslaagd).

En ik neem aan dat op de plaats van blaaaaaaat _zoiets_ als
PHP:
1
<?Header("Location: $url");exit;?>

komt te staan?

*insert signature here


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Ik moet zeggen dat je test dubieus is. Je zegt: if ($url) maar $url is waarschijnlijk van het type string en kan dus niet zozeer waar zijn of niet.

Staat er echt alleen dat "blaaaaaaaaaat" in de code die je gebruikt om te testen?

|_____vakje______|


Verwijderd

PHP:
1
<?if(isset($url) &amp;&amp; $url != ""){} else {}?>

lijkt me mooier...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Hoogstwaarschijnlijk je probleem:

De manual zegt:
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
Vervolgens roep je een index van een niet-array variabele aan, wanneer url niet voorkomt in de database.

Als je error_reporting op E_ALL had staan, had je dat opgemerkt, maar waarschijnlijk staat je error_reporting dermate laag, dat PHP daarover zelfs niet moeilijk doet.

Je krijgt dan waarschijnlijk een fatale error binnen de PHP parser die vervolgens soort "melp" zegt tegen de browser, en de browser weet weer niet wat hij daarmee moet.

Wat je dus moet doen is niet checken of $url wel bestaat, maar of er wel rows terugkomen uit de database:
code:
1
2
3
4
5
6
7
8
9
10
$result = mysql_query ( $query );
if ( mysql_num_rows ( $result ) > 0 )
{
   list ( $url ) = mysql_fetch_row ( $result );
   // url is ok, dus doe er wat mee
}
else
{
   // niet ok, dus ;)
}

da's mijn theorie ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

ja, of:
PHP:
1
<?if($url = mysql_fetch_result($sql, 0, "url")){} else {}?>

of is dat heel erg stom?

  • Grum
  • Registratie: Juni 2001
  • Niet online
en dan ipv
code:
1
list ( $url ) = mysql_fetch_row ( $result );

graag
code:
1
$url = mysql_result ( $result, 0, 0 );

en dan isset nog goed ook :D

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

zellufs:
ja, of:
PHP:
1
<?[snip]?>

of is dat heel erg stom?
nee hoor, kan ook :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
en dan ipv
[mysql_fetch_row]
graag
[mysql_result]
waarom? Die halve microseconde aan performance?
en dan isset nog goed ook :D
Maar ja, nederlands was ook niet mijn sterkste vak :? Wat bedoel je? :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
mensen, bedankt voor jullie reacties, ik zal eens kijken hoever ik er mee kom :)
Op maandag 10 juni 2002 15:09 schreef Grum het volgende:
http://www.e-gineer.com/articles/php-hackers-paradise-revisited.phtml

en dan eventjes naar 'Know Your Data' doorkarren :)
I'm on my way.....
Op maandag 10 juni 2002 15:10 schreef TjarkVerhoeven het volgende:
doe eens voor je 1e if(url) even een echo van die url. Komt er wel iets uit je query? zo niet -> dan zal if($url) ook niet waar zijn.
ja er komt een URL uit die query maar ik kom dus op een pagina uit die tegen me zegt "De pagina kan niet weergegeven worden" (zo'n standaard internet errorpagina)
2e:
weet ik wel
maar dit vind ik voor mezelf wat handiger
ik weet nu precies wat er gebeurt en dat kan ik aan een "else" niet zien
Op maandag 10 juni 2002 15:11 schreef CyberSnooP het volgende:
Ik moet zeggen dat je test dubieus is. Je zegt: if ($url) maar $url is waarschijnlijk van het type string en kan dus niet zozeer waar zijn of niet.
Als $url een value heeft is het waar
anders niet
Staat er echt alleen dat "blaaaaaaaaaat" in de code die je gebruikt om te testen?
Er staat op het moment alleen "blaaaaaaaaaaaaaat" maar daar komt idd een stukkie dat het doorstuurt naar de site
Op maandag 10 juni 2002 18:38 schreef drm het volgende:
Hoogstwaarschijnlijk je probleem:

Als je error_reporting op E_ALL had staan, had je dat opgemerkt, maar waarschijnlijk staat je error_reporting dermate laag, dat PHP daarover zelfs niet moeilijk doet.
Ik krijg die output van error_reporting niet omdat ik dus op een standaard "Deze pagina kan niet gevonden" pagina uitkom.
Op maandag 10 juni 2002 18:44 schreef drm het volgende:

Maar ja, nederlands was ook niet mijn sterkste vak :? Wat bedoel je? :)
Dan is het correcte code.

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

http://www.php.net/manual/en/function.header.php
There are two special-case header calls. The first is a header that starts with the string "HTTP/" (case is not significant), which will be used to figure out the HTTP status code to send. For example, if you have configured Apache to use a PHP script to handle requests for missing files (using the ErrorDocument directive), you may want to make sure that your script generates the proper status code.
Echter, IE wil een 404 error nog wel eens afvangen, en zen eigen error laten zien. `friendly` error noeemn ze dat.
Probeer eens:
PHP:
1
<? header("HTTP/1.0 200 OK");?>

of, waneer je gaat doorsturen:
PHP:
1
<? header("Location: bla.php");?>

Anders eens even door php.net zoeken, die doen dat ook, en je kan hun source bekijken *D

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op maandag 10 juni 2002 20:16 schreef Cipri het volgende:

Probeer eens:
PHP:
1
<? header("HTTP/1.0 200 OK");?>
thnx :* O+ :*

Zo simpel was het dus ;)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

even RTFM he? ;) No offence hoor, had het ook toevallig gelezen vorige week hoor ;)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

SWINX schreef ook:
Dan is het correcte code.
Oh, dan wel? ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1