Avatar billede sotec Nybegynder
24. april 2003 - 13:26 Der er 25 kommentarer og
1 løsning

Flere sider i en / sikring mod manipulering

Der har jo været forskellige løsninger på banen, hvormed man på en simpel måde kan lave flere sider i en.
Men hvordan sikre med sit script mod manipulation?
Eller hvordan laver man en default side?

Hvis jeg laver følgende:

<?
if (!$side) {
?>

Side 1

<?
}
if ($side== '2') {
?>

Side 2

<?
}
if ($sidel== '3') {
?>

Side 3

<?
}
?> 

Og så der er en som i adresselinjen skriver
minside.php?side=5 så får han jo en side uden
indhold, hvilket ikke er godt.

Kan man sikre mod manipulering eller lave en
ELSE så vis dette:
Avatar billede Slettet bruger
24. april 2003 - 13:28 #1
switch($side)
{
    case "1":
    //SIDE1
    break;
    case "2":
    //SIDE2
    break;
    default:
    //INGEN SIDE
    break;

}
Avatar billede Slettet bruger
24. april 2003 - 13:32 #2
En lille detalje!
if(!isset($side)
{
    $side=1;
}
switch($side)
{
    case "1":
    //SIDE1
    break;
    case "2":
    //SIDE2
    break;
    default:
    //INGEN SIDE
    break;
}
Avatar billede mccookie Seniormester
24. april 2003 - 13:32 #3
Eks.

if ($side > 4) { echo "Parameterfejl kammerat"; }
Avatar billede sotec Nybegynder
24. april 2003 - 13:34 #4
Regin: Det ser interessant ud for en newbie som mig :-)
Er "Switch" ikke mest brugt når man laver noget med random?
Avatar billede Slettet bruger
24. april 2003 - 13:37 #5
nej switch bruges når du har et statement, som kan have flere forskellige værdier end to forskellige. Og hvor der skal laves en bestemt handling til hver! (langt hurtigere end en masse if og else!
De værdier som ikke er defineret bliver samlet op af default!
Avatar billede sotec Nybegynder
24. april 2003 - 13:39 #6
Hmm, jeg kunne ikke rigtigt finde ud af at kalde siderne, Regin
Avatar billede sotec Nybegynder
24. april 2003 - 13:40 #7
mccookie:  Den er fin, men hvad så hvis nogen kalder side?=1
Som jo heller ikke er brugt i ovenstående script?
Avatar billede avminarm Juniormester
24. april 2003 - 13:41 #8
regin>> der skal da ikke break; på efter default (men jeg ved godt det ligger i "nallerne" efter en lang switch-kodestump
Avatar billede avminarm Juniormester
24. april 2003 - 13:43 #9
sotec>> switch er altså ret smart og efter min mening tidsbesparende - prøv at lege lidt videre med den, hvis du benytter php verdion 4.2.1+ skal du huske at benytte GET og POST dvs switch($side) skal være switch($_GET['side'])
Avatar billede Slettet bruger
24. april 2003 - 13:44 #10
<?php
$side = 2;
if(!isset($side)
{
    $side=1;
}
switch($side)
{
    case "1":
    echo "Dette er siden nummer 1... handler om Rudolf";
    break;
    case "2":
    echo "Dette er siden nummer 2... handler om julemanden";
    break;
    default:
    echo "Den side her kender jeg virkelig ikke!";
    break;
}
?>

avminarm>>Det er sikkert rigtigt nok... men det har ikke rigtigt nogen betydning for scriptet!

sotec>>Du skal være velkommen til at efterprøve din påstand!?
Avatar billede sotec Nybegynder
24. april 2003 - 13:47 #11
Jeg prøver igen.
Der kom bare en hvis side der hammerede derudaf
Avatar billede mathiash Nybegynder
24. april 2003 - 13:48 #12
Hvis jeg har forstået spørgsmålet rigtigt:
Du kan sagte bare bruge "else" sådan her:
<?
if (!$side) {
?>

Side 1

<?
}
if ($side== '2') {
?>

Side 2

<?
}
if ($side== '3') {
?>

Side 3

<?
} else {
?>
Siden <? $side ?> kunne ikke findes
<?
}
?>
Avatar billede mathiash Nybegynder
24. april 2003 - 13:49 #13
Og default side:
<?
}
if ($side== '') {
?>
Default side
<?
}
?>
Avatar billede sotec Nybegynder
24. april 2003 - 13:56 #14
Sorry, Regin jeg får nogle pase errors

mathiash:
Det ser godt ud, men "Siden kunne ikke findes"
gentages også på de sider som KAN findes :-)
Avatar billede Slettet bruger
24. april 2003 - 13:58 #15
Ok... det er tilladt at tjekke op på fejl selv!?

<?php
$side = 2;
if(!isset($side))
{
    $side=1;
}
switch($side)
{
    case "1":
    echo "Dette er siden nummer 1... handler om Rudolf";
    break;
    case "2":
    echo "Dette er siden nummer 2... handler om julemanden";
    break;
    default:
    echo "Den side her kender jeg virkelig ikke!";
    break;
}
?>
Avatar billede mathiash Nybegynder
24. april 2003 - 13:59 #16
Dette skulle meget gerne virke:
<?
if ($side== '') {
?>
<h1>Default side</h1>
<?
}
if ($side== '2') {
?>
<h1>Side 2</h1>
<?
}
if ($side== '3') {
?>
<h1>Side 3</h1>
<?
} else {
?>
Siden <? $side ?> kunne ikke findes
<?
}
?>
Avatar billede sotec Nybegynder
24. april 2003 - 14:02 #17
Ok, point taken
Men jeg hælder nok mest til den anden løsning
som er lettere for mig at gennemskue.
Avatar billede mathiash Nybegynder
24. april 2003 - 14:04 #18
ok :-D
Avatar billede Slettet bruger
24. april 2003 - 14:05 #19
sotec>>Lige udover det ikke virker og fylder dobbelt så meget... så skal du da være velkommen!
Avatar billede sotec Nybegynder
24. april 2003 - 14:08 #20
Siden kunne ikke findes kommer stadigvæk med på alle sider
Avatar billede sotec Nybegynder
24. april 2003 - 14:15 #21
Regin:  Faktisk virker dit heller ikke.
Lige meget hvad nr. jeg kalder får jeg side 2!
Avatar billede Slettet bruger
24. april 2003 - 14:16 #22
Det er jo nok fordi der står: $side = 2; i toppen af scriptet!
Bare fjern den linie... i princippet vidste jeg jo ikke hvor $side blev sat henne!
Avatar billede sotec Nybegynder
24. april 2003 - 14:19 #23
Ja, nu virker det.
Men minside.php og minside?side=1 giver det samme
og det var jo bl.a. det jeg gerne ville undgå.
Avatar billede Slettet bruger
24. april 2003 - 14:25 #24
if(!isset($side))//minside.php
{
    echo "minside"
}
else
{
    //Kør switchen her!
}
Avatar billede sotec Nybegynder
24. april 2003 - 14:28 #25
fandt selv en løsning:

<?
if ($side== '') {

echo "<h1>Default side</h1>";

}

elseif ($side== '2') {

echo "<h1>Side 2</h1>";

}
elseif ($side== '3') {

echo "<h1>Side 3</h1>";

} else {
echo "Siden".  $side  . "kunne ikke findes";
}

?>
Avatar billede mathiash Nybegynder
24. april 2003 - 14:30 #26
Takker for points :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester