[PHP] Kleine beginnersvragen

Pagina: 1
Acties:
  • 1.242 views

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Zojuist door search gehaald, geen resultaat.

Dus bij deze een centraal topic, waarin de newbies hun kleine vragen omtrent PHP kunnen stellen. Wellicht dat de veteranen hier ons van repliek kunnen dienen. :P.

Here we go.
Eerste php beginnervraag:
PHP:
1
2
3
4
<?php
// OK because we escaped the quotes!
echo "<h5 class=\"specialH5\">I love using PHP!</h5>";  
?>

Op het eind, is het niet logischer geweest om de backslash na de aanhalingsteken te laten volgen? Dus als volgt:
\"specialH5"\. Ik ben benieuwd welke logica hierachter zit? :)

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Nee, waarom zou dat logischer zijn? De \ geeft aan dat het volgende karakter geëscapet moet worden, omdat het normaal gesproken een andere functie heeft (in dit geval, de string afsluiten.)

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Nee, dat is niet logischer. Je sluit namelijk niks af, je geeft alleen aan de parser af dat het teken na de escape character niet als code maar letterlijk gezien moet worden. Hij doet er dus niets mee.
De twee aanhalingstekens hebben geen relatie met elkaar voor PHP.

Overigens zou je in jouw voorbeeld ook beter single quotes kunnen gebruiken:
PHP:
1
2
// OK we prevented escaping the quotes!
echo '<h5 class="specialH5">I love using PHP!</h5>';

[ Voor 28% gewijzigd door Room42 op 02-03-2013 02:08 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Snappum. Hetzelfde als met
PHP:
1
echo 'Test - Aan \'t leren!';


De backslash geeft dus de php aan, dat hij de opeenvolgende karakter moet negeren. Geldt de backslash slechts voor 1 karakter, of meerdere karakters in één?

[ Voor 160% gewijzigd door Hatsieflatsie op 02-03-2013 02:21 ]


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 18-07 02:20

dusty

Celebrate Life!

Het verschil tussen een dubbele aanhalingsteken en een enkele is dat de variabelen tussen dubbelen wel worden ge-evalueerd, en die tussen enkele niet.

Voorbeeldje;

PHP:
1
2
3
4
5
<?php
$hello='world';
echo "Hello $hello<br>";
echo 'Hello $hello<br>';
?>

Hiervan is de output dus:
Hello world
Hello $hello

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 18-07 02:20

dusty

Celebrate Life!

Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 02:14:
Snappum. Hetzelfde als met
PHP:
1
echo 'Test - Aan \'t leren!';


De backslash geeft dus de php aan, dat hij de opeenvolgende karakter moet negeren. Geldt de backslash slechts voor 1 karakter, of meerdere karakters in één?
Het is alleen voor de karakter die er direct achter staat.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Dankjewel!

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 02:14:
[...]

Normaal ziet het zo uit zonder escaping: "<h5 class="specialH5">I love using PHP!</h5>";
Ehh, nee. Normaal ziet het er zonder escaping zo uit:
PHP:
1
echo "<h5 class="specialH5">I love using PHP!</h5>";
Zie je de kleurtjes? En het geeft zo'n foutmelding:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in test.php on line 2
Dus een onverwachte string, waar hij een komma of puntkomma verwacht had.
Wat betekent dat? specialH5 wordt dus geïnterpreteerd door de parser, waar jij het als onderdeel van de string voor echo had willen hebben. De string wordt dus onderbroken (beëindigd) door de matchende quote.
De aanhalingstekens horen toch bij de specialH5? Dan zou het logischer zijn om het als /"specialH5"/ af te sluiten. Ik zie geen string in dat regel, behalve een verwijzing naar een opmaakklasse.
De quotes in de HTML-code (of whatever je echo'ed) horen niet bij de PHP-code.
[...]
Dus als ik goed begrijp, kun je in PHP net zo goed 1 aanhalingsteken gebruiken? Omdat ze immers geen relatie met elkaar hebben. In je voorbeeld, gebruik je wel de apostrofs om de boel te beginnen en af te sluiten. Dus mij lijkt dat ze dan verband met elkaar houden?

Ik lijk het nog steeds niet te snappen. :$
Nee, wat ik bedoel is dat de quotes in de string geen relatie met elkaar hebben. De twee uiterste quotes hebben dat zeker wel. Ze beginnen en eindigen de string.

Tip: Gebruik een text editor met syntax highlighting! Notepad++ (voor Windows), bijvoorbeeld.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Rye
  • Registratie: Mei 2005
  • Laatst online: 25-04 15:57

Rye

En het is eigenlijk ook beter om gewoon dit te doen:
PHP:
1
2
3
<h5 class="specialH5">
    <?php echo "I love using PHP!"; ?>
</h5>


Ofc kan zich vanalles binnen de php tags bevinden. Echo'en van HTML is eigenlijk bad practice. Hele kleine stukjes zijn nog wel oké, maar liever gewoon in (<?php) en uit (?>) php droppen binnen de HTML.

www.ping-win.nl


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

dusty schreef op zaterdag 02 maart 2013 @ 02:24:
[...]

Het is alleen voor de karakter die er direct achter staat.
Bijna.

PHP:
1
 echo "\x23";


Resultaat: "#".

Na de \ komt een zogenoemde escape sequence. Die zijn meestal 1 char lang maar dat hoeft niet per see. http://php.net/manual/en/language.types.string.php
Rye schreef op zaterdag 02 maart 2013 @ 02:29:
En het is eigenlijk ook beter om gewoon dit te doen:
PHP:
1
2
3
<h5 class="specialH5">
    <?php echo "I love using PHP!"; ?>
</h5>


Ofc kan zich vanalles binnen de php tags bevinden. Echo'en van HTML is eigenlijk bad practice. Hele kleine stukjes zijn nog wel oké, maar liever gewoon in (<?php) en uit (?>) php droppen binnen de HTML.
Liever gewoon een template engine gebruiken.

[ Voor 39% gewijzigd door CyBeR op 02-03-2013 02:40 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Graag wil ik even berichten dat ik blij ben met jullie behulpzaamheid! Andere newbie vraag!

De period (.) wordt gebruikt om twee strings met elkaar te verbinden. Wanneer de code als volgt uitziet:
PHP:
1
2
3
4
5
6
7
8
<?php
$x = 4;
echo "The value of x with post-plusplus = " . $x++;
echo "<br /> The value of x after the post-plusplus is " . $x;
$x = 4;
echo "<br />The value of x with with pre-plusplus = " . ++$x;
echo "<br /> The value of x after the pre-plusplus is " . $x;
?>
Dan krijg je dit:
The value of x with post-plusplus = 4
The value of x after the post-plusplus is = 5
The value of x with with pre-plusplus = 5
The value of x after the pre-plusplus is = 5
Okay.

Maar begrijp ik nou dat de variabele $x gewijzigd wordt door de voorgaande handeling (zie regel 3, .$4++). Dat idee komt onlogisch op mij over. Als een variabele gedeclareerd wordt, dan staat het toch vast.

Nu kun je bewerkingen uitvoeren op de variabele, ja. Dan is het een gebeurtenis op zichzelf.
In regel 4 wordt de variabele opnieuw aangeroepen. Echter, de variabele blijkt al aangetast te zijn, zonder dat er een bewerking op losgelaten is. Volgens mij zouden de handelingen op zichzelf moeten zijn, en niet de variabele daarna verder aantasten. Maar het gebeurt wel. Waarom is voor dat idee gekozen? :/.

De variabele veranderen doe je in de variabele zelf. En niet in de bewerkingen, die ook invloed uitoefenen op de volgende bewerkingen.

[ Voor 4% gewijzigd door Hatsieflatsie op 02-03-2013 03:19 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Dat zie ik ook zelden. Daar geldt eigenlijk dezelfde regel als Rye en CyBeR al aangaven: Code (logica) en markup wil je van elkaar scheiden.
Maar het gebeurt wel. Waarom is voor dat idee gekozen? :/.
Dat het kan wil niet zeggen dat je het moet doen. Dat is met alles in het leven.

Welke tutorial ben jij aan het volgen?


Dit is ook een leuke:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$x = 5;
if($x = 4) {
    echo 'true $x = '. $x;
} else {
    echo 'false $x = '. $x;
}   

echo '<br />';

$x = 5;
if($x == 4) {
    echo 'true $x = '. $x;
} else {
    echo 'false $x = '. $x;
}


Tip: Leuke site om snel online wat testjes te bouwen: http://writecodeonline.com/php/

[ Voor 73% gewijzigd door Room42 op 02-03-2013 03:40 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Rye
  • Registratie: Mei 2005
  • Laatst online: 25-04 15:57

Rye

Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 03:17:
Maar begrijp ik nou dat de variabele $x gewijzigd wordt door de voorgaande handeling (zie regel 3, .$4++). Dat idee komt onlogisch op mij over. Als een variabele gedeclareerd wordt, dan staat het toch vast.
Nee, een variable is variabel. Hence the name.
Nu kun je bewerkingen uitvoeren op de variabele, ja. Dan is het een gebeurtenis op zichzelf.
In regel 4 wordt de variabele opnieuw aangeroepen. Echter, de variabele blijkt al aangetast te zijn, zonder dat er een bewerking op losgelaten is.
Er is echter wel een bewerking op losgelaten. Wat jij volgens mij wilt zien is dit:
PHP:
1
2
3
<?php
    $x = $x + 1;
?>

echter $x++ doet echter iets als dit:
PHP:
1
2
3
4
5
<?php
    $y = $x;
    $x = $x + 1;
    return $y;
?>

Die $x++ is eigenlijk een soort verkapte functieaanroep, hetzelfde geldt voor ++$x.
Volgens mij zouden de handelingen op zichzelf moeten zijn, en niet de variabele daarna verder aantasten. Maar het gebeurt wel. Waarom is voor dat idee gekozen? :/.

De variabele veranderen doe je in de variabele zelf. En niet in de bewerkingen, die ook invloed uitoefenen op de volgende bewerkingen.
En toch is dat wel zo. PHP is hier zeker niet uniek in. In andere talen wordt dit ook toegepast.

Edit:

Ik zie al welke tutorial je volgt:
http://www.tizag.com/phpT/operators.php
Kijk onder het kopje "combination arithmetic & assignment operators" naar de tabel. Die staat net boven het stukje code wat je net plaatste. Daar zie je een kolom met de naam: Equivalent Operation.

Denk dat dat wel wat uitlegt?

Edit 2:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    $x = 5;
    if($x = 4) { //Hier krijgt $x de waarde 4 toegewezen. Dit returned TRUE.
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }   

    echo '<br />';

    $x = 5;
    if($x == 4) { //Hier vergelijk je de waarde van $x met 4. Dit retured FALSE.
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }
?>


= : toewijzen
== : vergelijken van de waarde van de variable
=== : vergelijk van de waarde en het type van de variable

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
    $x = 5;
    if ($x == 5) { // True
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }   

    echo '<br />';

    $x = 5;
    if($x == '5') { // True
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }   

    $x = 5;
    if($x === 5) { // True
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }

    $x = 5;
    if ($x === '5') { // False
        echo 'true $x = '. $x;
    } else {
        echo 'false $x = '. $x;
    }
?>

[ Voor 34% gewijzigd door Rye op 02-03-2013 03:53 ]

www.ping-win.nl


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Haha ja precies, die variabele had ik nog even vergeten te melden. Variabel zegt al veel. Het is geen constante. Maar die zijn natuurlijk ook gewoon beschikbaar in PHP :)

Om het verhaal hierboven even duidelijk te maken met een voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$x = 5;
$y = 6;
if($x++ == $y) {
    echo 'true $x = '. $x;
} else {
    echo 'false $x = '. $x;
}

echo '<br />';

$x = 5;
$y = 6;
if(++$x == $y) {
    echo 'true $x = '. $x;
} else {
    echo 'false $x = '. $x;
}

Geeft:

code:
1
2
false $x = 6
true $x = 6

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 03:17:
Graag wil ik even berichten dat ik blij ben met jullie behulpzaamheid! Andere newbie vraag!

De period (.) wordt gebruikt om twee strings met elkaar te verbinden. Wanneer de code als volgt uitziet:
PHP:
1
2
3
4
5
6
7
8
<?php
$x = 4;
echo "The value of x with post-plusplus = " . $x++;
echo "<br /> The value of x after the post-plusplus is " . $x;
$x = 4;
echo "<br />The value of x with with pre-plusplus = " . ++$x;
echo "<br /> The value of x after the pre-plusplus is " . $x;
?>
Dan krijg je dit:

[...]

Okay.

Maar begrijp ik nou dat de variabele $x gewijzigd wordt door de voorgaande handeling (zie regel 3, .$4++). Dat idee komt onlogisch op mij over. Als een variabele gedeclareerd wordt, dan staat het toch vast.

Nu kun je bewerkingen uitvoeren op de variabele, ja. Dan is het een gebeurtenis op zichzelf.
In regel 4 wordt de variabele opnieuw aangeroepen. Echter, de variabele blijkt al aangetast te zijn, zonder dat er een bewerking op losgelaten is. Volgens mij zouden de handelingen op zichzelf moeten zijn, en niet de variabele daarna verder aantasten. Maar het gebeurt wel. Waarom is voor dat idee gekozen? :/.
Zo werken de meeste programmeertalen. Er zijn uitzonderingen op: in Erlang bijvoorbeeld zijn variables (die dus ook niet zo heten) na assignment niet meer te wijzigen. Dat is wel wat lastiger programmeren echter.
De variabele veranderen doe je in de variabele zelf. En niet in de bewerkingen, die ook invloed uitoefenen op de volgende bewerkingen.
De ++$bla-notatie is gewoon een afkorting voor $bla = $bla + 1. De $bla++-notatie is een afkorting voor dat plus het returnen van de originele waarde. Dat alles heeft in veel omstandigheden nut.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Weer wat geleerd. Ook leuk om de voorbeelden van Rye en sjaakduhuuhl te bestuderen. Vooral die tip van Writecodeonline is handig. Hartelijk bedankt allemaal. d:)b

Edit: en maak het niet te laat hé! :P

[ Voor 16% gewijzigd door Hatsieflatsie op 02-03-2013 04:27 ]


Acties:
  • 0 Henk 'm!

  • Peunage
  • Registratie: Februari 2009
  • Laatst online: 17-07 21:05
Ik weet niet of deze vraag hier gesteld kan worden, maar ik probeer het maar.

Op dit moment ben ik bezig met een PHP social media project. Ik heb een login gemaakt die werkt op basis van mysql en php sessions. Wanneer de gebruiker een gebruikersnaam en wachtwoord invoert wordt deze combinatie in de database gecheckt. Als de combinatie voorkomt wordt de gebruikers ingelogd door middel van een PHP session. De session die hij onthoudt is het e-mail adres, omdat dit uniek is.

Nou is mijn vraag, is het mogelijk om real time bij te houden welke gebruikers er ingelogd zijn? Is het bijvoorbeeld mogelijk om via een php functie te zoeken naar bestaande php sessions?
Wat ik precies wil is, wanneer je op een profielpagina van een gebruiker komt moet je kunnen zien of deze is ingelogd of niet(aan de hand van een lampje dat groen of rood is bijvoorbeeld).

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
PHP slaat hun sessions voor iedere gebruiker op in een tijdelijke map op de server. De mapnaam kun je vinden in php.ini onder de variabele session.save_path.

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Heb zelf ook een vraag:

PHP:
1
2
3
4
5
6
7
8
9
10
$employeeAges;
$employeeAges["Lisa"] = "28";
$employeeAges["Jack"] = "16";
$employeeAges["Ryan"] = "35";
$employeeAges["Rachel"] = "46";
$employeeAges["Grace"] = "34";

foreach( $employeeAges as $name => $age){
    echo "Name: $name, Age: $age <br />";
}


Met als output dit:
Name: Lisa, Age: 28
Name: Jack, Age: 16
Name: Ryan, Age: 35
Name: Rachel, Age: 46
Name: Grace, Age: 34
Maar dan vraag ik me af hoe de php weet dat met de variabele $age de cijfers bedoeld worden? De => in for each vind ik ook wat merkwaardig?

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18-07 22:02
de => in de foreach is gewoon de seperator van de array. Nu weet je dat er een employee met de naam Lisa is, maar dat weet je niet altijd. Dus nu kijkt hij naar alle entry's in de array, en de naam kun je dus opvragen met $name en de leeftijd met $age.

Dit is standaard zo, een foreach gebruikt een array altijd op die manier.

PHP:
1
$array[$key] = $value;


bij de foreach heb je dus ook de key en value. Het is dus een volgorde, de eerste var in de foreach is altijd de key in bovenstaand voorbeeld, en de 2e is altijd de value. Welke naam jij daar aan geeft mag je zelf weten (Dus in dit geval is er de naam 'name' en 'age' aan gegeven, maar je had ze ook 'hoi' en 'doei' kunnen noemen).

[ Voor 50% gewijzigd door RedHat op 02-03-2013 18:07 ]


Acties:
  • 0 Henk 'm!

  • Peunage
  • Registratie: Februari 2009
  • Laatst online: 17-07 21:05
Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 18:02:
Heb zelf ook een vraag:

PHP:
1
2
3
4
5
6
7
8
9
10
$employeeAges;
$employeeAges["Lisa"] = "28";
$employeeAges["Jack"] = "16";
$employeeAges["Ryan"] = "35";
$employeeAges["Rachel"] = "46";
$employeeAges["Grace"] = "34";

foreach( $employeeAges as $name => $age){
    echo "Name: $name, Age: $age <br />";
}


Met als output dit:

[...]


Maar dan vraag ik me af hoe de php weet dat met de variabele $age de cijfers bedoeld worden? De => in for each vind ik ook wat merkwaardig?
Dat staat gewoon op regel 9.

code:
1
2
3
foreach( $employeeAges as $name => $age){
    echo "Name: $name, Age: $age <br />";
}


Employeeages is een array. Een variabele met meerdere waarden er in. Met foreach gaat hij net zo lang waarden uit de array halen tot hij leeg is. Voor elke waarde pakt hij de $name en $age. Dit is een benoemde/associative array, je hebt ook onbenoemde arrays. Daar staan bijvoorbeeld alleen de leeftijden in.

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 18:02:
Maar dan vraag ik me af hoe de php weet dat met de variabele $age de cijfers bedoeld worden? De => in for each vind ik ook wat merkwaardig?
Dat is gewoon de syntax van php. Het is namelijk altijd foreach ($array as $key => $value). In dit geval zijn de waarden uit $array numerieke waardes (als string). De naam van de key en value variabelen kun je vrij kiezen.
RedHat schreef op zaterdag 02 maart 2013 @ 18:04:
de => in de foreach is gewoon de seperator van de array. Nu weet je dat er een employee met de naam Lisa is, maar dat weet je niet altijd. Dus nu kijkt hij naar alle entry's in de array, en de naam kun je dus opvragen met $name en de leeftijd met $age.
Beetje omslachtige uitleg :P
Peunage schreef op zaterdag 02 maart 2013 @ 18:08:
Dit is een benoemde array, je hebt ook onbenoemde arrays. Daar staan bijvoorbeeld alleen de leeftijden in.
Ik denk dat je het beter een associatieve array kunt noemen; deze term levert ook betere zoekresultaten op.

[ Voor 17% gewijzigd door Bee.nl op 02-03-2013 18:14 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Peunage schreef op zaterdag 02 maart 2013 @ 17:42:
Ik weet niet of deze vraag hier gesteld kan worden, maar ik probeer het maar.

Op dit moment ben ik bezig met een PHP social media project. Ik heb een login gemaakt die werkt op basis van mysql en php sessions. Wanneer de gebruiker een gebruikersnaam en wachtwoord invoert wordt deze combinatie in de database gecheckt. Als de combinatie voorkomt wordt de gebruikers ingelogd door middel van een PHP session. De session die hij onthoudt is het e-mail adres, omdat dit uniek is.

Nou is mijn vraag, is het mogelijk om real time bij te houden welke gebruikers er ingelogd zijn? Is het bijvoorbeeld mogelijk om via een php functie te zoeken naar bestaande php sessions?
Wat ik precies wil is, wanneer je op een profielpagina van een gebruiker komt moet je kunnen zien of deze is ingelogd of niet(aan de hand van een lampje dat groen of rood is bijvoorbeeld).
Denk eraan: Het e-mailadres is niet uniek voor een sessie. Wat als die persoon 2x inlogt? Uniek aan een sessie is een session_id. Deze kun je opslaan in de database en zo kun je tevens zien wie er ingelogd is.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Peunage
  • Registratie: Februari 2009
  • Laatst online: 17-07 21:05
Room42 schreef op zaterdag 02 maart 2013 @ 18:15:
[...]

Denk eraan: Het e-mailadres is niet uniek voor een sessie. Wat als die persoon 2x inlogt? Uniek aan een sessie is een session_id. Deze kun je opslaan in de database en zo kun je tevens zien wie er ingelogd is.
Hoe zou iemand 2 keer kunnen inloggen dan? Ik heb een check gebouwd of iemand al ingelogd is of niet. Als hij wel ingelogd is wordt hij van de loginpagina doorgestuurd naar de homepage. Of bedoel jij iets anders?

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 18:02:
Heb zelf ook een vraag:

PHP:
1
2
3
4
5
6
7
8
9
10
$employeeAges;
$employeeAges["Lisa"] = "28";
$employeeAges["Jack"] = "16";
$employeeAges["Ryan"] = "35";
$employeeAges["Rachel"] = "46";
$employeeAges["Grace"] = "34";

foreach( $employeeAges as $name => $age){
    echo "Name: $name, Age: $age <br />";
}


Met als output dit:

[...]


Maar dan vraag ik me af hoe de php weet dat met de variabele $age de cijfers bedoeld worden? De => in for each vind ik ook wat merkwaardig?
Snap je wat foreach doet? Hij stapt door elke record in de array. Met $var1 => $var2 vraag je foreach om de array key in $var1 te zetten en de waarde in $var2.
De notatie komt ook overeen met hoe je een array definieert:
PHP:
1
$var = array('key' => 'waarde')


Tip: Kijk eens hoe je array eruit ziet:
PHP:
1
print_r($variabele);
Voorbeeldoutput:
code:
1
2
3
4
5
6
7
8
Array
(
    [Lisa] => 28
    [Jack] => 16
    [Ryan] => 35
    [Rachel] => 46
    [Grace] => 34
)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Peunage schreef op zaterdag 02 maart 2013 @ 18:20:
[...]

Hoe zou iemand 2 keer kunnen inloggen dan? Ik heb een check gebouwd of iemand al ingelogd is of niet. Als hij wel ingelogd is wordt hij van de loginpagina doorgestuurd naar de homepage. Of bedoel jij iets anders?
Niemand in jouw wereld heeft meer dan een computer, of meer dan een browser?

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Peunage schreef op zaterdag 02 maart 2013 @ 18:20:
[...]

Hoe zou iemand 2 keer kunnen inloggen dan? Ik heb een check gebouwd of iemand al ingelogd is of niet. Als hij wel ingelogd is wordt hij van de loginpagina doorgestuurd naar de homepage. Of bedoel jij iets anders?
Computer, telefoon, andere computer, etc.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Peunage
  • Registratie: Februari 2009
  • Laatst online: 17-07 21:05
Room42 schreef op zaterdag 02 maart 2013 @ 18:21:
[...]

Computer, telefoon, andere computer, etc.
CyBeR schreef op zaterdag 02 maart 2013 @ 18:21:
[...]


Niemand in jouw wereld heeft meer dan een computer, of meer dan een browser?
Ik check of session['email'] bestaat, maar ik bedenk net inderdaad dat het geen zin heeft als ze een andere browser pakken.

Ik bedoelde in mijn eerste post trouwens dat het email adres uniek is binnen de database, qua session maakt het in dit geval niet uit of iemand meerdere keren inlogt.
Terug naar mijn vraag, die nu op de vorige pagina staat.
Peunage schreef op zaterdag 02 maart 2013 @ 17:42:
Nou is mijn vraag, is het mogelijk om real time bij te houden welke gebruikers er ingelogd zijn? Is het bijvoorbeeld mogelijk om via een php functie te zoeken naar bestaande php sessions?
Wat ik precies wil is, wanneer je op een profielpagina van een gebruiker komt moet je kunnen zien of deze is ingelogd of niet(aan de hand van een lampje dat groen of rood is bijvoorbeeld).

[ Voor 42% gewijzigd door Peunage op 02-03-2013 18:47 ]


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 18-07 23:04
Ik begrijp de bedoeling en werking van de array's/foreach. Maar misschien dat ik niet duidelijk geweest ben, maar de $age is een variabele. Hij pakt de cijfers (values) uit de array.

Er is niet van tevoren gedefinieerd wat de variabele $age inhoudt. Hoe weet PHP dat de cijfers bij $age horen? :?.

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Je zegt op dat moment dat de values van de array aan $age toegeschreven worden.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Peunage
  • Registratie: Februari 2009
  • Laatst online: 17-07 21:05
Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 18:59:
[...]


[...]


[...]
Er is niet van tevoren gedefinieerd wat de variabele $age inhoudt. Hoe weet PHP dat de cijfers bij $age horen? :?.
Dat heb jij op regel 8 gedefinieerd.
code:
1
2
3
foreach( $employeeAges as $name => $age){ 
    echo "Name: $name, Age: $age <br />"; 
}


Er is gewoon afgesproken dat de eerste variabele in een associative array de key is(deze heb jij $name genoemd) en de 2de variabele de waarde(deze heb jij age $genoemd).
PHP stopt dan elke waarde die hij vind in $age en elke key in $name.

[ Voor 5% gewijzigd door Peunage op 02-03-2013 19:05 ]


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 22:17
Misschien dat onderstaande je nog wat verder helpt :)

PHP:
1
2
3
foreach ($array as $key => $value) {
    echo 'Key: '. $key .' with value '. $value;
}


Een array kan op verschillende manieren zijn opgebouwd:
PHP:
1
2
$employeeAges['Rick'] = 29; //Rick is de key, 29 is de value
$employeeAges['Jack'] = 16; //Jack is de key, 16 is de value


OF
PHP:
1
2
3
4
$employeeAges = array(
    'Rick' => 29, //Rick is de key, 29 is de value
    'Jack' => 16 //Jack is de key, 16 is de value
);


Als je de laatste manier bekijkt zie je waarom in een foreach de => als separator wordt gebruikt :)


Als aanvulling op jouw voorbeeld: een cijfer sla ik bij voorkeur op als cijfer en niet als string (dus je vult 29 in, in plaats van "29").

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Hatsieflatsie schreef op zaterdag 02 maart 2013 @ 18:59:
[...]


[...]


[...]


Ik begrijp de bedoeling en werking van de array's/foreach. Maar misschien dat ik niet duidelijk geweest ben, maar de $age is een variabele. Hij pakt de cijfers (values) uit de array.

Er is niet van tevoren gedefinieerd wat de variabele $age inhoudt. Hoe weet PHP dat de cijfers bij $age horen? :?.
$age is in dit geval slechts een naampje, het had ook $value mogen zijn. Een array bestaat uit keys => waarde. Dus $array['key'] = 'waarde'. Foreach stapt gewoon door alle keys van de array en geeft de waarde aan de variabele die jij gedefinieerd hebt.
Dus: Voor elke key in $array, zeg me wat de huidige $key met (=>) $waarde is.
Je kunt ook
PHP:
1
foreach ($array as $value) { /*... */ }
doen. Dan krijg je alleen de waarde van de huidige key.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

Sorry, maar we hebben hier geen behoefte aan een groot topic waar iedereen maar even snel een simpel vraagje komt dumpen. Losse vragen mogen best in losse topics, mits ze voldoen aan De Quickstart. Een groot verzameltopic voor dit soort vraagjes willen we in elk geval niet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 16-07 15:38
Vergeten te sluiten? :)

@Hatsieflatsie: begin gewoon eens met een boek. Dit zijn geen beginnersvragen, dit zijn vooral "ik heb nooit iets over PHP gelezen"-vragen ;)

https://niels.nu


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

:P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.