[Verplaatst] Ik tracht PHP te leren. vb in boek, klopt niet

Praat mee over van alles en nog wat!
Forumregels
Dit forum is voor alle zinnige gesprekken buiten phpBB om. Discussies en gesprekken over interessante onderwerpen.

Een nieuw onderwerp moet..:
  • uiteraard voldoen aan de algemene voorwaarden
  • niet passen in de gewone supportfora
  • interessante zijn voor het overgrote deel van onze gebruikers
  • een neutrale of positieve ondertoon hebben
  • anders zijn dan bestaande onderwerpen
Plaats reactie
happy
Berichten: 9
Lid geworden op: 20 dec 2004, 11:25

[Verplaatst] Ik tracht PHP te leren. vb in boek, klopt niet

Bericht door happy » 19 mar 2005, 20:29

Ik probeer het te leren, maar de code, die in boek staat klopt niet. Kunnen jullie mij verder helpen.
code=

Code: Selecteer alles

<html>
<head>
<title>Arrays in PHP</title>
</head>
<body>
<?php
// Twee eenvoudige geïndexeerde arrays maken
$assortiment=array("tafel","kast","bed","nachtkastje","kruk","stoel");
$getallen=array(1,5,884,34,6,12,77,93,21);

// Alle arraywaarden na elkaar weergeven
echo "<b>Arrays ongesorteerd</b><br>";
echo "<b>Assortiment: </b>";
$i=0;
while($assortiment[$i])
{
  echo $assortiment[$i] . " ";
  $i++;
}
echo "<br><b>Getallen: </b>";
$i=0;
while($getallen[$i])
{
  echo $getallen[$i] . " ";
  $i++;
}
echo "<br><br>";

// Arraywaarden op de posities 2 en 4 teruggeven
echo "<b>Arraywaarde 2 (assortiment):</b> " . $assortiment[2] . "<br>";
echo "<b>Arraywaarde 4 (getallen): </b>" . $getallen[4] . "<br>";
echo "<br>";

// Aantal waarden in de array vaststellen en teruggeven
echo "<b>Aantal arraywaarden: </b><br>";
echo "<b>Assortiment: </b>" . count($assortiment) . "<br>";
echo "<b>Getallen: </b>" . count($getallen) . "<br>";
echo "<br>";

// Arrays oplopend sorteren en dan weergeven
sort($assortiment);
sort($getallen);
echo "<b>Arrays oplopend gesorteerd</b><br>";
echo "<b>Assortiment: </b>";
$i=0;
while($assortiment[$i])
{
  echo $assortiment[$i] . " ";
  $i++;
}
echo "<br><b>Getallen: </b>";
$i=0;
while($getallen[$i])
{
  echo $getallen[$i] . " ";
  $i++;
}
echo "<br><br>";

// Arrays aflopend sorteren en dan weergeven
rsort($assortiment);
rsort($getallen);
echo "<b>Arrays aflopend gesorteerd</b><br>";
echo "<b>Assortiment: </b>";
$i=0;
while($assortiment[$i])
{
  echo $assortiment[$i] . " ";
  $i++;
}
echo "<br><b>Getallen: </b>";
$i=0;
while($getallen[$i])
{
  echo $getallen[$i] . " ";
  $i++;
}
echo "<br><br>";

// Maximum en minimum van de arrays bepalen
echo "<b>Maximum assortiment: </b>" . max($assortiment) . "<br>";
echo "<b>Minimum assortiment: </b>" . min($assortiment) . "<br><br>";
echo "<b>Maximum getallen: </b>" . max($getallen) . "<br>";
echo "<b>Minimum getallen: </b>" . min($getallen);
?>

</body>
</html>
Ik krijg de volgende meldingen:

Code: Selecteer alles

Arrays ongesorteerd
Assortiment: tafel kast bed nachtkastje kruk stoel
Notice: Undefined offset: 6 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 15

Getallen: 1 5 884 34 6 12 77 93 21
Notice: Undefined offset: 9 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 21


Arraywaarde 2 (assortiment): bed
Arraywaarde 4 (getallen): 6

Aantal arraywaarden:
Assortiment: 6
Getallen: 9

Arrays oplopend gesorteerd
Assortiment: bed kast kruk nachtkastje stoel tafel
Notice: Undefined offset: 6 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 44

Getallen: 1 5 6 12 21 34 77 93 884
Notice: Undefined offset: 9 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 50


Arrays aflopend gesorteerd
Assortiment: tafel stoel nachtkastje kruk kast bed
Notice: Undefined offset: 6 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 62

Getallen: 884 93 77 34 21 12 6 5 1
Notice: Undefined offset: 9 in c:\program files\easyphp1-7\www\2\arrays_functies.php on line 68


Maximum assortiment: tafel
Minimum assortiment: bed

Maximum getallen: 884
Minimum getallen: 1

Het zal wel simpel zijn, maar ik als nieuweling kom er niet uit.

Herman

Veranderingen:
- Verplaatst
- Blauwe tekst weg
- Code tags gebruikt
-- Bee

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 19 mar 2005, 20:36

A. Dit hoort hier niet thuis ;)
B. Zou je het tussen

Code: Selecteer alles

[code]
[/code] kunnen zetten ;)

abcde
Berichten: 1494
Lid geworden op: 19 feb 2004, 16:02

Bericht door abcde » 19 mar 2005, 20:38

paulus schreef:A. Dit hoort hier niet thuis ;)
Ik denk dat die dacht dat phpBB een forum over php was. :wink:
Bijna 1500 posts!

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 19 mar 2005, 20:39

zou kunnen :D.
(En is eigenlijk ook wel zo :))

happy
Berichten: 9
Lid geworden op: 20 dec 2004, 11:25

Bericht door happy » 19 mar 2005, 20:45

Hallo, excuus dat het verkeerd is geplaatst,
Waar kan ik met dit soort vragen dan naar toe.
Een Nederlandse site aub, anders kom ik er helemaal niet uit.

Herman

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 19 mar 2005, 20:47

In algemene chat staat het beter, en lees even de mededelingenlijst ;)
... Maar ik modereer (nog) niet.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 19 mar 2005, 20:51

Ik weet niet welke boek je gebruikt, maar ik vind dit een rare manier om door een array heen te lopen.
De foutmelding zijn opzicht niet erg, het script zal er niet niet door werken.
Zelf gebruik ik altijd een for loop.

Code: Selecteer alles

$getallen=array(1,5,884,34,6,12,77,93,21); 
for($i = 0;$i < count($getallen);$i++){
  echo $getallen[$i] . " ";
}
Deze code doet hetzelfde als:

Code: Selecteer alles

$i=0;
while($assortiment[$i])
{
  echo $assortiment[$i] . " ";
  $i++;
} 
alleen hier zit de variabelen declaratie en ophoging in de functie ingebouwd.

happy
Berichten: 9
Lid geworden op: 20 dec 2004, 11:25

Bericht door happy » 19 mar 2005, 21:05

Paulus bedankt.

Ik ben nu 5 maanden bezig om PHP onder de knie te krijgen, maar kom weinig verder. Ik heb nu een boek gekocht "PHP zonder stress"hihi maar daar staat van alles verkeerd in. Vandaar de vraag, alleen begrijp ik nog niet goed, wat er verkeerd aan de code is. Het komt iedere keer voor als er while bij staat..

Herman.

p.s. Ik heb een board gemaakt. http://www.camperdigitaal.nl/forum ,
dit ging me iets beter af.
Nu heb ik ook een andere databse op die site staan en die probeer ik aan te roepen en dregelijke.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 19 mar 2005, 21:10

als je me op msn toevoegt(PM me ff voor adres) wil ik je daar best verder mee helpen :)

happy
Berichten: 9
Lid geworden op: 20 dec 2004, 11:25

Bericht door happy » 20 mar 2005, 06:43

Ik maak graag gebruik van je aanbod. Ik reageer nu pas vanwege nachtdienst.

Heb al wel van collega's begrepen dat de teller geen eindpunt heeft en vandaar de offset fout.

Herman

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 20 mar 2005, 10:13

ja dat klopt inderdaad. Ik heb je op msn toegevoegd.

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 20 mar 2005, 20:12

paulus schreef:Deze code doet hetzelfde als:

Code: Selecteer alles

$i=0;
while($assortiment[$i])
{
  echo $assortiment[$i] . " ";
  $i++;
} 
alleen hier zit de variabelen declaratie en ophoging in de functie ingebouwd.
Dan krijg je een undefined index error, lijkt me. Met while(isset()) kan het wel, al lijkt foreach() me logischer.

M.Braam
Berichten: 192
Lid geworden op: 03 mar 2005, 11:18
Locatie: Arnhem

Bericht door M.Braam » 21 mar 2005, 11:24

Eff een vraag hierover ik zie dit staan:

Code: Selecteer alles

<html> 
<head> 
<title>Arrays in PHP</title> 
</head> 
<body> 
<?php 
<body>


Ik zie hierin dat er een Html wordt geopend en ik zie dat er een Php wordt geopend werkt dat wel ?

Of stel ik nou een domme vraag ?
Met vriendelijke groet,
Michael Braam

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 21 mar 2005, 12:34

de php maakt server-side een HTML pagina. PHP schrijft dus HTML en de browser die zorgt er dan voor dat het wordt weergeven.

Donny_nl
Berichten: 463
Lid geworden op: 27 feb 2004, 13:55
Locatie: Rotterdam
Contacteer:

Bericht door Donny_nl » 21 mar 2005, 16:18

Als ik jou was zou ik gewoon dit bovenaan je pagina zetten:

Code: Selecteer alles

<?php

error_reporting (E_ERROR | E_PARSE | E_WARNING );

?>
Dan voorkom je dat je 'fouten' te zien krijgt. Als je Error_reporting op ALL hebt staan krijg je continue notices ondanks dat je misschien foutloos programmeert. Sessie handling in php is niet helemaal waterdicht nl. en zo zijn er nog wel een paar dingetjes.

Met het stukje script hierboven geef je php de opdracht om alleen bepaald (belangrijke) fouten te laten zien en alle minder belangrijke fouten niet.
Wil je Poker leren spelen?
SQL leren?

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 21 mar 2005, 16:31

Dat zou ik niet doen, van de fouten die hij nu zag heeft hij weer een hoop geleerd. Alleen bij iets wat ook echt gebruikt wordt, zoals een online forum, zou ik dit doen ;)

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 21 mar 2005, 17:42

Donny_nl schreef:Met het stukje script hierboven geef je php de opdracht om alleen bepaald (belangrijke) fouten te laten zien en alle minder belangrijke fouten niet.
En dit raad ik ook ten zeerste af, elk script zou moeten werken onder error_reporting E_ALL. Die "minder belangrijke fouten" die je beschrijft, de undifined varaibles of indexes, kunnen het verschil maken tussen een veilig script of een script dat aan alle kanten openstaat voor hackers. Prachtig praktijkvoorbeeld is phpBB, dat deze notices ook bewust negeert. Dit had tot gevolg dat er talloze XSS hacks gevonden zijn, waarvan de meesten in 2.0.7, 2.0.8, 2.0.9 en 2.0.10 zijn gedicht.

Zodra variabelen of array elementen worden opgeroepen wanneer ze niet bestaan, ontstaat het risico dat deze dankzij register_globals alsnog worden ingevuld door de bezoeker. Dit kan zelfs leiden tot SQL of script injecties!

Donny_nl
Berichten: 463
Lid geworden op: 27 feb 2004, 13:55
Locatie: Rotterdam
Contacteer:

Bericht door Donny_nl » 22 mar 2005, 12:33

Maar ook met foutloos scripten ontkom je niet aan notices als je sessies gebruikt op een windows server.

Kijk, het is natuurlijk wel zo dat wanneer scripts ontwikkeld worden, error reporting altijd op ALL staat zodat je de fouten er uit kunt halen. Maar als script 'in de lucht' gaan zou je nooit op ALL moeten zetten omdat fouten op die manier ook voor hackers verborgen blijven. Hoe meer je laat zien, hoe kwetsbaarder je scripts.
Wil je Poker leren spelen?
SQL leren?

Plaats reactie