[PHP] Gebruik van Apostrof

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bobmeister
  • Registratie: Augustus 2008
  • Laatst online: 16:30
Ik vind het zelf erg onduidelijk wanneer je nou " moet gebruiken of '? Iemand van jullie hier duidelijke uitleg over?

code:
1
2
3
4
5
6
7
8
9
10
11
12
<form action="index.php" method="post">
<input type="text" value="voornaam" /><br>
<input type="text" value="achternaam"/><br>
<input type="text" value="straatnaam"/><br>
<input type="text" value="geboortejaar"/><br>
<input type="submit"/>
</form>

<?php
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
echo [b]'welkom $voornaam $achternaam'; [/b] // één of twee apostrofs?
?>

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Nu online

BCC

" als de string variablen bevat die nog geparsen moeten worden.
' als de string geen variabelen bevat die nog geparsed moeten worden.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Welk deel van http://nl3.php.net/echo is dan moeilijk te begrijpen?

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


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Nu online
Awsom schreef op dinsdag 16 december 2008 @ 19:41:
Ik vind het zelf erg onduidelijk wanneer je nou " moet gebruiken of '? Iemand van jullie hier duidelijke uitleg over?

code:
1
2
3
<?php
echo [b]'welkom $voornaam $achternaam'; [/b] // één of twee apostrofs?
?>
Je had er zelf toch wel achter kunnen komen dat dat voorbeeldje simpelweg niet werkt?


code:
1
2
3
<?php
echo "welkom $voornaam $achternaam";
?>


of


code:
1
2
3
<?php
echo 'welkom '.$voornaam.' '.$achternaam'; 
?>


dus. Zie BCC's post voor de uitleg. ;)

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

BCC schreef op dinsdag 16 december 2008 @ 19:42:
" als de string variablen bevat die nog geparsen moeten worden.
' als de string geen variabelen bevat die nog geparsed moeten worden.
De eerste klopt, de tweede echter niet. Althans, de TS vraagt wanneer je de een of de ander moet gebruiken. Natuurlijk moet je double quotes gebruiken als er variabelen in de string staan, maar dat betekent nog niet dat je enkele quotes moet gebruiken als dat niet zo is. Het is dan ook meer een kwestie van persoonlijke voorkeur om enkele quotes te gebruiken.

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!

  • BCC
  • Registratie: Juli 2000
  • Nu online

BCC

Tja, als je overal stug "" gebruikt, dan leest dat voor andere programeurs lastig, omdat ze naar variabelen aan het zoeken zijn in die string. Daarnaast is het trager omdat de string ook on geparsed moet worden, ookal staat er niets in. Dat zal waarschijnlijk niet significant zijn, maar toch.

Volgens mij kon ik het voor de TS niet veel duidelijker omschrijven.

[ Voor 10% gewijzigd door BCC op 16-12-2008 19:52 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Bobmeister
  • Registratie: Augustus 2008
  • Laatst online: 16:30
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="index.php" method="post">
<input type="text" value="voornaam" /><br>
<input type="text" value="achternaam"/><br>
<input type="text" value="straatnaam"/><br>
<input type="text" value="geboortejaar"/><br>
<input type="submit"/>
</form>

<?php
//aftrekken
$jaar = 2008;
$leeftijd = $jaar - $geboortejaar
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
echo "Welkom $voornaam $achternaam"; 
echo "Woon je lekker aan de $straatnaam?";
echo "Ben je nog maar $leeftijd jaar oud?";
?>


Dit staat gesaved in een index.php bestand.. En upgeload naar mn server. Waarom doet hij het niet...

PS: Ben totaal nieuw in PHP, zie sommige dingen nog over het hoofd.. Maar betekend dit dat ik " altijd kan gebruiken? Zou handig zijn, hoef ik hier niet bij na te denken ;)

Acties:
  • 0 Henk 'm!

  • haneev
  • Registratie: November 2005
  • Laatst online: 15:56
Ik zal een voorbeeld geven om het te illustreren, in html gebruik je meestal " (dubbele quotes) voor html.
Voor mysql gebruik je meestal ' (enkele) omdat dat beter typt in query.

PHP:
1
2
$sql = "SELECT * FROM test WHERE naam  = 'Jan doedel';";
echo '<input type="submit" name="test" />';

Zoals je ziet is het hier niet nodig om moeilijk te gaan doen met backslashes of wat dan ook.
Persoonlijk vind ik dit netter echo 'Hoi ' . $naam; dan echo "Hoi $naam";

Acties:
  • 0 Henk 'm!

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 07-07 15:40
Is there a difference in using double (") and single (') quotes for strings. Call 1000x, time:
100 % 1: double (") quotes. Just an empty string: $tmp[] = "";
101 % 1: single (') quotes. Just an empty string: $tmp[] = '';
101 % 2: double (") quotes. 20 bytes Text : $tmp[] = "aaaaaaaaaaaaaaaaaaaa";
103 % 2: single (') quotes. 20 bytes Text : $tmp[] = 'aaaaaaaaaaaaaaaaaaaa';
Test nu: -> http://www.blueshoes.org/phpBench.php

[ Voor 5% gewijzigd door djexplo op 16-12-2008 20:02 ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Nu online
Awsom schreef op dinsdag 16 december 2008 @ 19:53:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="index.php" method="post">
<input type="text" value="voornaam" /><br>
<input type="text" value="achternaam"/><br>
<input type="text" value="straatnaam"/><br>
<input type="text" value="geboortejaar"/><br>
<input type="submit"/>
</form>

<?php
//aftrekken
$jaar = 2008;
$leeftijd = $jaar - $geboortejaar
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
echo "Welkom $voornaam $achternaam"; 
echo "Woon je lekker aan de $straatnaam?";
echo "Ben je nog maar $leeftijd jaar oud?";
?>


Dit staat gesaved in een index.php bestand.. En upgeload naar mn server. Waarom doet hij het niet...
Je mist een ; achteraan regel 11. Zoiets zal ook wel blijken uit de foutmelding die je krijgt. ;)

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Bobmeister
  • Registratie: Augustus 2008
  • Laatst online: 16:30
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form action="index.php" method="post">
<input type="text" value="voornaam" />
<input type="text" value="achternaam" />
<input type="text" value="straatnaam" />
<input type="text" value="geboortejaar" />
<input type="submit" name="submit" value="Mijn gegevens" />
</form>

<?php
//aftrekken
$jaar = 2008;
$leeftijd = $jaar - $geboortejaar; 
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
?>
<?php
echo $_POST["Welkom $voornaam $achternaam"]; 
echo $_POST["Woon je lekker aan de $straatnaam?"];
echo $_POST["Ben je nog maar $leeftijd jaar oud?"];
?>


Nu kan ik het wel invullen máár krijg ik geen resultaat?

Acties:
  • 0 Henk 'm!

Verwijderd

Awsom schreef op dinsdag 16 december 2008 @ 19:53:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="index.php" method="post">
<input type="text" value="voornaam" /><br>
<input type="text" value="achternaam"/><br>
<input type="text" value="straatnaam"/><br>
<input type="text" value="geboortejaar"/><br>
<input type="submit"/>
</form>

<?php
//aftrekken
$jaar = 2008;
$leeftijd = $jaar - $geboortejaar
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
echo "Welkom $voornaam $achternaam"; 
echo "Woon je lekker aan de $straatnaam?";
echo "Ben je nog maar $leeftijd jaar oud?";
?>


Dit staat gesaved in een index.php bestand.. En upgeload naar mn server. Waarom doet hij het niet...

PS: Ben totaal nieuw in PHP, zie sommige dingen nog over het hoofd.. Maar betekend dit dat ik " altijd kan gebruiken? Zou handig zijn, hoef ik hier niet bij na te denken ;)
waarschijnlijk gebruik je een oud voorbeeld. zie http://nl3.php.net/register_globals
tip: $_POST in dit geval
om het iets beter te snappen, zet eens var_dump($_POST) in je bestand

Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Nu online
Awsom schreef op dinsdag 16 december 2008 @ 20:00:
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
//aftrekken
$jaar = 2008;
$leeftijd = $jaar - $geboortejaar; 
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
?>
<?php
echo $_POST["Welkom $voornaam $achternaam"]; 
echo $_POST["Woon je lekker aan de $straatnaam?"];
echo $_POST["Ben je nog maar $leeftijd jaar oud?"];
?>


Nu kan ik het wel invullen máár krijg ik geen resultaat?
Verhip, dat je $_POST miste zag ik zomaar even over het hoofd. ;)

Maar je gebruikt het totaal verkeerd... :X Er is een var $_POST["voornaam"], geen $_POST["Welkom $voornaam $achternaam"]...

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Echt, Awsom, ga een basis cursus PHP doen. Koop er een goed boek over ofzo en zorg dat je er wat van leert. Ga alsjeblieft niks op deze manier bouwen, daar worden zo lekken in geschoten.

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


Acties:
  • 0 Henk 'm!

  • Bobmeister
  • Registratie: Augustus 2008
  • Laatst online: 16:30
EEDHoe moet ik het gebruiken dan als ik dat wil bereiken (dat kun je wel uit code halen denk ik ;) )
Hier nog even voor de duidelijkheid, de gebruiker voert zijn gegevens in (Voor-, achter-, straatnaam en geboortejaar) Klikt op 'submit' en moet dan dus die tekst zien met
[b]Welkom VOORNAAM ACHTERNAAM !
Woon je lekker aan de STRAATNAAM ?~
Ben je nog maar LEEFTIJD ( 2008 -geboortejaar!)


@Muer,

Ga ik doen, maar wil gewoon even dat dit lukt ;) Ik weet niet wat ik fout doe, van fouten leer je :)

[ Voor 13% gewijzigd door Bobmeister op 16-12-2008 20:23 ]


Acties:
  • 0 Henk 'm!

  • qanar
  • Registratie: Februari 2008
  • Laatst online: 21-05-2019
Xander schreef op dinsdag 16 december 2008 @ 19:59:
Je mist een ; achteraan regel 11. Zoiets zal ook wel blijken uit de foutmelding die je krijgt. ;)
offtopic:
Hoe zet je zo'n foutmeldingen aan? Als ik een ; vergeet krijg ik gewoon een blanco pagina. En dan is het zoeken in pas aangepaste files.


Ik gebruik normaal:
echo "Hallo " . $_GET['naam'] . "!";

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Awsom, dit is niet leren van fouten. Dit is aanploeteren omdat je totaal geen idee hebt wat je aan het doen bent. je weet niet hoe arrays werken, je zit met jarenoude tutorials te kloten (en de meeste zoniet alle tutorials op een phpfreakz zijn gewoon echt ruk). Daarom zeg ik, stop hier mee en zorg dat je EERST goed lesmateriaal krijgt, DAARNA dat materiaal echt volgt en DAN PAS gaat overwegen om nog een regel code te schrijven.

Foutmelding is met error_reporting();

[ Voor 62% gewijzigd door MueR op 16-12-2008 20:35 ]

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


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form action="index.php" method="post">
<input type="text" value="voornaam" />
<input type="text" value="achternaam" />
<input type="text" value="straatnaam" />
<input type="text" value="geboortejaar" />
<input type="submit" name="submit" value="Mijn gegevens" />
</form>

<?php
//aftrekken
jaar = 2008;
$leeftijd = $jaar - $_POST["geboortejaar"]; 
//laat voornaam, achternaam, straatnaam, en geboortejaar van de surfer zien!
?>
<?php
echo "Welkom ".$_POST["voornaam"] . " " . $_POST["achternaam"]; 
echo "Woon je lekker aan de " . $_POST["straatnaam?"];
echo "Ben je nog maar " . $_POST["leeftijd"] . " jaar oud?";
?>

Overigens ben ik fervent tegenstander van het "simpelweg" gebruiken van variabelen in een string ("Welkom $naam") omdat ik vind dat het de leesbaarheid drastisch verslechtert en de kans op quote-foutjes flink laat toenemen.

Oh, en het kan zijn dat ik iets vergeten ben uiteraard, heb al een tijd geen PHP meer aangeraakt.

Acties:
  • 0 Henk 'm!

  • hellfighter87
  • Registratie: Mei 2008
  • Laatst online: 13:22
Humh ik zou redelijk snel voor ' ' kiezen omdat:
Het sneller is als ""
Je makkelijk kan zien wat variable zijn, zeker als je syntax highlighting gebruikt
Het lekker werkt als je html in je echo gebruikt

Acties:
  • 0 Henk 'm!

  • jeroenikke
  • Registratie: Augustus 2003
  • Laatst online: 20-09 13:04
hellfighter87 schreef op dinsdag 16 december 2008 @ 20:36:
Het lekker werkt als je html in je echo gebruikt
Dit laatste snap ik niet. Als je
echo "<table><td>... blablabla ... </table>"
gebruikt, werkt t toch ook?

Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
HTML gebruikt dubbele-quotes (") voor argumenten;

<a href="http://www.tweakers.net">link</a>

Als de string in dubbele-quotes staat zul je dat moeten escapen, waardoor het onleesbaar wordt. Verder ben ik het absoluut eens met hellfighter; enkele quotes voor strings, en zet nooit variablen binnen quotes.

Acties:
  • 0 Henk 'm!

  • Bobmeister
  • Registratie: Augustus 2008
  • Laatst online: 16:30
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="index.php" method="post">
<input type="text" name="voornaam" value="Je Voornaam" />
<input type="text" name="straatnaam" value="Je straatnaam" />
<input type="text" name="geboortejaar" value="Je geboortejaar" />
<input type="submit" name="submit" value="Mijn gegevens" />
</form>

<?php
if( isset( $_POST['submit'] ) )
{
$jaar = 2008;
$leeftijd = $jaar - $_POST['geboortejaar'];
echo "Welkom ".$_POST['voornaam']."!";  
echo "Woon je lekker aan de ".$_POST['straatnaam']."?";
echo "Ben je nog maar ".$leeftijd."?";
}

?>


Ben er eindelijk uit. Dit is hem geworden :) Zal morgen maar eens een goed boek gaan halen!

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

BCC schreef op dinsdag 16 december 2008 @ 19:51:
Tja, als je overal stug "" gebruikt, dan leest dat voor andere programeurs lastig, omdat ze naar variabelen aan het zoeken zijn in die string.
Hierbij maak je de aanname dat iedereen jouw methode aanhoudt. Er zijn ook zat mensen die zweren bij het feit dat variabelen in strings sowieso onhandig zijn en dus altijd concatenations gebruiken. Daarnaast kan een fatsoenlijke IDE gewoon duidelijk de variabelen in strings laten zien. Bovendien kun je met enkele quotes weer geen newlines gebruiken.
Daarnaast is het trager omdat de string ook on geparsed moet worden, ookal staat er niets in. Dat zal waarschijnlijk niet significant zijn, maar toch.
Een veelgebruikte drogreden. Heb je het weleens getest, of is het gewoon een onderbuikgevoel? Lexical analysis is namelijk O(n), en dat moet sowieso gebeuren (er moet ook naar escapes gezocht worden, en überhaupt naar het einde van de string). Een snelle test hier levert niet echt een verschil op (soms is de ene methode sneller, soms de andere - de ruis is dus een stuk groter dan het verschil tussen de methoden, en dat bij 100.000 string concatenaties)

[ Voor 7% gewijzigd door .oisyn op 16-12-2008 22:10 ]

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!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

qanar schreef op dinsdag 16 december 2008 @ 20:27:
[...]


offtopic:
Hoe zet je zo'n foutmeldingen aan? Als ik een ; vergeet krijg ik gewoon een blanco pagina. En dan is het zoeken in pas aangepaste files.
Even display_errors op On zetten in PHP.ini
Ik gebruik normaal:
echo "Hallo " . $_GET['naam'] . "!";
Niet op die manier mag ik hopen, dat is heel erg onveilig. Stel dat jij op hetzelfde domein een systeem hebt draaien met een cookie-based beveiliging. Als ik daar van weet, kan ik jou een link sturen met daarin wat HTML en javascript. Als je dan op die link klikt heb ik je cookies en daarmee toegang tot je beveiligde systeem.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Move naar Programming

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
Je leeftijdsberekening is niet goed. Je moet nog even afvangen of iemand al jarig is geweest of niet, anders geeft hij een jaar te veel aan

Acties:
  • 0 Henk 'm!

  • Icey
  • Registratie: November 2001
  • Laatst online: 17-09 16:46
Awsom schreef op dinsdag 16 december 2008 @ 20:22:
Ga ik doen, maar wil gewoon even dat dit lukt ;) Ik weet niet wat ik fout doe, van fouten leer je :)
Nee, van fouten leer je fout programmeren. Ik ken genoeg 'programmeurs' met een 'maar het werkt toch' mentaliteit....

Ik heb vorig jaar de les PHP programmeren verzorgt voor de Hogeschool Utrecht. Een aantal mensen daarvan hadden zelfs nog nooit HTML geschreven maar toch konden die na een half jaar aardig uit de voeten. Als je maar echt -wilt- en bereid bent daar tijd in te investeren (boeken lezen, handleidingen, code van andere) dan kom je een heel eind. Een van de eerste dingen die ik geschreven heb is een soort basis handleiding, PHP Programmeren voor beginners. Alstublieft, wellicht kan je er wat mee.

Acties:
  • 0 Henk 'm!

  • link0007
  • Registratie: Augustus 2006
  • Niet online
Van iemand die een les verzorgt op een hogeschool verwacht je toch wel dat 'ie bewust is van het gevaar van $_SERVER['PHP_SELF'] mbt XSS ;)

http://arjan.i-cey.net/ph...t(%22XSS%22)%3C/SCRIPT%3E

:) xss, xss, xss!! Kom het op tweakers steeds vaker tegen dat ik zonder moeite een lek kan vinden.


Het gedoe met dubbele haakjes, enkele haakjes, `backticking` haakjes... Vooral dat je geen newline characters binnen enkele haakjes kan doen vind ik op z'n minst vreemd. Variabelen binnen haakjes snap ik ook niet, is alleen maar onhandig, en je kan immers toch geen gebruik maken van functies binnen je haakjes, dus stel je bent veilig en je gebruikt functies om uitvoer schoon te houden, dan moet je alsnog gaan concatenaten.

Maar kwa snelheid is het nauwelijks een echt argument.. Ikzelf gebruik gewoon overal enkele haakjes (tenzij dubbele haakjes echt logischer zijn) zodat ik iig duidelijke richtlijnen kan hanteren mbt mijn syntax. Dat maakt het voor andere mensen ook makkelijker om mijn code te lezen, mits ze er aan gewend zijn (en anders wennen ze wel :P ).

IF IF = THEN THEN THEN = ELSE ELSE ELSE = IF;


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

link0007 schreef op woensdag 17 december 2008 @ 15:03:
Van iemand die een les verzorgt op een hogeschool verwacht je toch wel dat 'ie bewust is van het gevaar van $_SERVER['PHP_SELF'] mbt XSS ;)
Bovendien wordt bij de $_GET uitgelegd strip_tags() te gebruiken, maar ik vind dat maar een erg slecht advies. Waarom zou ik niet <b>.oisyn</b> mogen heten als ik dat wil? Waar het om gaat is dat het belangrijk is erop te letten dat de contents tekens kunnen bevatten die een speciale betekenis hebben voor de applicatie die die content interpreteert. En meestal heb je functies om te zorgen dat die content die betekenis verliest. Dus htmlspecialchars() voor html output, mysql_real_escape_string() voor mysql queries, escaleshellcmd()/escapeshellarg() voor shell commands, etc.

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.

Pagina: 1