Welkom, Gast. Je bent niet ingelogd.

PHP naam includen

Sparky
Geplaatst op: 01 May 2007, 14:47
PimpCoins: 0
💸+
Bewerken Quote

Ey, ik ben zojuist weer even aan de slag met PHP.
Ik heb dus een index.php en de toegestaande pagina's worden
geinclude via zo'n scriptje.

Nu, in de lay-out zelf staat er een balkje waarin de naam van de pagina vermeld staat.
Ik zou dus willen dat , als ik dan op een andere pagina staat die geinclude is, de naam wijzigt in de naam van de pagina.

Bv:

pagina : index.php
menu : U bevind zich op index

----
pagina : index.php?pagina=test
menu : U bevind zich op test

Weet iemand hoe idt moet?
Dank bij voorbaat?

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 01 May 2007, 14:49
PimpCoins: 0
💸+
Bewerken Quote

als de pagina is: index.php?pagina=test
dan in het menu:

1
2
3
<?php
echo 'U bevindt zich op ' . htmlentities($_GET['pagina'], ENT_QUOTES) . '';
?>

Dus als je dan naar index.php?pagina=hoi gaat krijg je te zien dat je je bevindt op hoi

Saven
admin
Geplaatst op: 01 May 2007, 15:21
PimpCoins: 0
💸+
Bewerken Quote

De volledige versie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

function strip($str)
{
    if( get_magic_quotes_gpc() )
    {
        return htmlentities(stripslashes($str, ENT_QUOTES));
    }
    else
    {
        return htmlentities($str, ENT_QUOTES);
    }
}

$pagina = (isset($_GET['pagina'])) ? strip($_GET['pagina']) : 'Index';

echo 'Je bent aanwezig op '.$pagina;

?>

Jaapje
Geplaatst op: 01 May 2007, 17:16
PimpCoins: 0
💸+
Bewerken Quote

Je kan toch ook gewoon de pagina opvragen op deze manier:

1
2
3
<?php
echo"Je bent nu op de pagina: ".$_GET['p']."."; 
?>

Edit:
Volgens mij is deze manier ook sneller dan alle andere manieren?

[Laatst bewerkt door Jaapje op dinsdag 1 mei 2007, om 17:18]
Badeendje
Pompehdompehdom
moderator
Geplaatst op: 01 May 2007, 17:18
PimpCoins: 0
💸+
Bewerken Quote

@ jaapje, jouw manier komt op dezelfde neer als die van mij en saven, alleen die is noujuist onveiliger, aangezien als je html bijv. invoert achter die ?p= dan kan je een html injection uitvoeren, wat niet de bedoeling is.
Met htmlentities zoals ik eerst deed, is dat niet mogelijk, en zoals saven het daarna voordeed, is het nog veiliger

[Laatst bewerkt door Badeendje op dinsdag 1 mei 2007, om 17:19]
Jaapje
Geplaatst op: 01 May 2007, 17:21
PimpCoins: 0
💸+
Bewerken Quote

Je kan mijn manier toch ook gewoon beveiligen als je een pagina opvraagt?

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 01 May 2007, 17:24
PimpCoins: 0
💸+
Bewerken Quote

Nee, jouw manier, dan haal je alle informatie die de ?p= bevat uit de url dus ook html, dus als ik dan plaats bijv: ?p=<img src="hoi.jpg" />
Dan krijg je ineens het plaatje hoi.jpg te zien op je pagina, en er zou nog meer kunnen, Dus jouw manier is noujuist onveilig. en met htmlentities()/htmlspecialchars() is htmlinjection niet meer mogelijk.

[Laatst bewerkt door Badeendje op dinsdag 1 mei 2007, om 17:25]
Jaapje
Geplaatst op: 01 May 2007, 17:25
PimpCoins: 0
💸+
Bewerken Quote

Wat leer ik toch veel hier zeg.
Altijd gedacht dat mijn manier zo veilig was

FastFox
Geplaatst op: 01 May 2007, 17:28
PimpCoins: 0
💸+
Bewerken Quote

Als het goed is krijg je de pagina niet eens te zien als die niet bestaat, en welke site gebruikt nou htmlbullshit<javascript>.php?

Jaapje
Geplaatst op: 01 May 2007, 17:32
PimpCoins: 0
💸+
Bewerken Quote

Om even eigenwijs te zijn:
Mijn manier is toch wel veilig.

Ik heb bijv. mijn forum:

1
2
3
4
5
6
$testquery = mysql_query("SELECT * FROM topics WHERE topic_id = '".$_GET['topic_id']."' ") or die (mysql_error());

$test = mysql_num_rows($testquery);
  if (empty($test)){ 
        echo "Het ingevoerde topic id klopt niet."; 
  }

Als ik nu iets in de trent van

1
<img src=blaat.jpg>

achter
'index.php?p=forum&topic_id='
zet, krijg ik gewoon de melding dat het opgevraagde topic id niet klopt

[Laatst bewerkt door Jaapje op dinsdag 1 mei 2007, om 17:32]
Saven
admin
Geplaatst op: 01 May 2007, 17:37
PimpCoins: 0
💸+
Bewerken Quote

Met jouw manier is SQL injection mogelijk, dus ik zou snel ff checken of de input wel een cijfer is met bijvoorbeeld: ctype_digit(), is_int(), is_numeric()

NickD
Kurosaki Kun!!
Geplaatst op: 01 May 2007, 17:37
PimpCoins: 0
💸+
Bewerken Quote

ja logisch omdat je een error handler fsow ervoor heb gemaakt =)
Maar als zoiets niet is gemaakt is 't wel onveilig!

Jaapje
Geplaatst op: 01 May 2007, 17:40
PimpCoins: 0
💸+
Bewerken Quote

Saven schreef:

Met jouw manier is SQL injection mogelijk, dus ik zou snel ff checken of de input wel een cijfer is met bijvoorbeeld: ctype_digit(), is_int(), is_numeric()

Afgezien van die snelle denk-en-type-fout is het script toch wel veilig?

Jaapje
Geplaatst op: 01 May 2007, 19:19
PimpCoins: 0
💸+
Bewerken Quote

Iemand heeft na de update mijn perongelukke dubbelpost dus al verwijderd.

Nu nog even mijn vraag:
Is mijn script nou wel of niet veilig,
en als hij niet veilig is waar mijn lek dan zit

Saven
admin
Geplaatst op: 01 May 2007, 19:21
PimpCoins: 0
💸+
Bewerken Quote

Jaapje schreef:

Iemand heeft na de update mijn perongelukke dubbelpost dus al verwijderd.

Nu nog even mijn vraag:
Is mijn script nou wel of niet veilig,
en als hij niet veilig is waar mijn lek dan zit


Als magic_quotes_gpc() uit staat op je server dan zit je met een probleem, dan kan ik SQL injection doen.
Anders is er gelukkig niet veel aan de hand, maar is het toch beter áltijd de input van je users te controleren

iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 01 May 2007, 19:48
PimpCoins: 0
💸+
Bewerken Quote

Jaapje schreef:

Iemand heeft na de update mijn perongelukke dubbelpost dus al verwijderd.

Nu nog even mijn vraag:
Is mijn script nou wel of niet veilig,
en als hij niet veilig is waar mijn lek dan zit


Níet veilig. User-input, alles wat de user kan bewerken en wat naar je script gestuurt wordt, is altijd onbetrouwbaar en daarom onveilig.
User-input moet je altijd beveiligen.

Fritsh
Wiedaar
Geplaatst op: 01 May 2007, 20:05
PimpCoins: 0
💸+
Bewerken Quote

Ik heb het met file_exists erbij gedaan

📫

Nieuw privébericht

🔥

Registreren


Login