|
| Brug af foreach til login. Fra : Mathias Mejborn |
Dato : 15-05-06 13:13 |
|
Hej gruppe.
Jeg sidder og arbejder med et program i php-gtk og har brug for noget
hjælp til undersøgelsen af login.
Jeg bruger følgende kode:
foreach($users AS $value){
if ($nick == $value[username] && $pass == $value[pass]){
echo "Brugeren blev fundet \n";
}else{
$login_error_dialog = &new GtkMessageDialog(null, 0,
Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, 'Brugeren blev ikke fundet på
systemet');
$login_error_dialog->run();
$login_error_dialog->destroy();
}
}
}
}
Problemet med dette er vel at når der er flere brugere på systemet, så
risikere man at man bliver ved med at få en popup hver gang den finder
en bruger i filen som ikke matcher de kriterier man har indtastet.
Hvordan løser man dette på en bedst mulig måde?
--
Mvh
Mathias Mejborn
| |
Mathias Mejborn (15-05-2006)
| Kommentar Fra : Mathias Mejborn |
Dato : 15-05-06 13:17 |
|
Mathias Mejborn wrote:
> Hej gruppe.
>
> Jeg sidder og arbejder med et program i php-gtk og har brug for noget
> hjælp til undersøgelsen af login.
>
> Jeg bruger følgende kode:
>
> foreach($users AS $value){
> if ($nick == $value[username] && $pass == $value[pass]){
> echo "Brugeren blev fundet \n";
> }else{
> $login_error_dialog = &new GtkMessageDialog(null,
> 0, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, 'Brugeren
> blev ikke fundet på systemet');
> $login_error_dialog->run();
> $login_error_dialog->destroy();
> }
> }
> }
> }
>
> Problemet med dette er vel at når der er flere brugere på systemet, så
> risikere man at man bliver ved med at få en popup hver gang den finder
> en bruger i filen som ikke matcher de kriterier man har indtastet.
>
> Hvordan løser man dette på en bedst mulig måde?
>
> --
> Mvh
> Mathias Mejborn
Er det bedre at bruge while?
--
Mvh
Mathias Mejborn
| |
Bertel Lund Hansen (15-05-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 15-05-06 14:07 |
|
Mathias Mejborn skrev:
> Er det bedre at bruge while?
Brug af for eller while er et designvalg. Et programmeringssprog
kunne fungere med kun én af de to kommandoer til rådighed.
for (...) {
tjek_bruger_og_sæt_fundet();
if ($fundet) break;
}
$fundet=false;
while (!$fundet) {
tjek_bruger_og_sæt_fundet();
}
Man skal ikke (længere) spekulere på nogen tidsforskel - kun på
kode der er nem at arbejde med.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Bertel Lund Hansen (15-05-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 15-05-06 13:23 |
|
Mathias Mejborn skrev:
> Jeg sidder og arbejder med et program i php-gtk og har brug for noget
> hjælp til undersøgelsen af login.
> Problemet med dette er vel at når der er flere brugere på systemet, så
> risikere man at man bliver ved med at få en popup hver gang den finder
> en bruger i filen som ikke matcher de kriterier man har indtastet.
> Hvordan løser man dette på en bedst mulig måde?
Du sætter et flag før løkken begynder.
$fundet=false;
Hvis du så finder brugeren inde i løkken, sætter du $fundet til
true og breaker.
Først når løkken er slut, vælger du om der skal åbnes en
balladeboks eller om fyren må lukkes ind.
.... hvis ikke det altså kan gøres med en indbygget kommando. Der
findes færdige søgekommandoer til et array i PHP, f.eks.:
http://dk2.php.net/manual/en/function.in-array.php
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Bjarne Bue (15-05-2006)
| Kommentar Fra : Bjarne Bue |
Dato : 15-05-06 13:28 |
|
Mathias Mejborn wrote:
> Hej gruppe.
>
> Jeg sidder og arbejder med et program i php-gtk og har brug for noget
> hjælp til undersøgelsen af login.
>
> Jeg bruger følgende kode:
>
> foreach($users AS $value){
> if ($nick == $value[username] && $pass == $value[pass]){
> echo "Brugeren blev fundet \n";
> }else{
> $login_error_dialog = &new GtkMessageDialog(null,
> 0, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, 'Brugeren
> blev ikke fundet på systemet');
> $login_error_dialog->run();
> $login_error_dialog->destroy();
> }
> }
> }
> }
>
> Problemet med dette er vel at når der er flere brugere på systemet, så
> risikere man at man bliver ved med at få en popup hver gang den finder
> en bruger i filen som ikke matcher de kriterier man har indtastet.
>
> Hvordan løser man dette på en bedst mulig måde?
$fandt_en_bruger = false;
foreach($users as $value) {
if ($nick == $value[username] && $pass == $value[pass]) {
$fandt_en_bruger = true;
}
}
if ($fandt_en_bruger == false) {
$login_error_dialog = &new GtkMessageDialog(
null, 0, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK,
'Brugeren blev ikke fundet på systemet');
$login_error_dialog->run();
$login_error_dialog->destroy();
}
Mvh Bjarne
| |
Mathias Mejborn (15-05-2006)
| Kommentar Fra : Mathias Mejborn |
Dato : 15-05-06 14:12 |
|
Bjarne Bue wrote:
> Mathias Mejborn wrote:
>
>> Hej gruppe.
>>
>> Jeg sidder og arbejder med et program i php-gtk og har brug for noget
>> hjælp til undersøgelsen af login.
>>
>> Jeg bruger følgende kode:
>>
>> foreach($users AS $value){
>> if ($nick == $value[username] && $pass == $value[pass]){
>> echo "Brugeren blev fundet \n";
>> }else{
>> $login_error_dialog = &new GtkMessageDialog(null,
>> 0, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, 'Brugeren
>> blev ikke fundet på systemet');
>> $login_error_dialog->run();
>> $login_error_dialog->destroy();
>> }
>> }
>> }
>> }
>>
>> Problemet med dette er vel at når der er flere brugere på systemet, så
>> risikere man at man bliver ved med at få en popup hver gang den finder
>> en bruger i filen som ikke matcher de kriterier man har indtastet.
>>
>> Hvordan løser man dette på en bedst mulig måde?
>
>
> $fandt_en_bruger = false;
> foreach($users as $value) {
> if ($nick == $value[username] && $pass == $value[pass]) {
> $fandt_en_bruger = true;
> }
> }
> if ($fandt_en_bruger == false) {
> $login_error_dialog = &new GtkMessageDialog(
> null, 0, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK,
> 'Brugeren blev ikke fundet på systemet');
> $login_error_dialog->run();
> $login_error_dialog->destroy();
> }
>
> Mvh Bjarne
Mange tak for det brugte dit forslag med en break; i så at den ikke
fortsætter med at løbe det hele igennem.
--
Mvh
Mathias Mejborn
| |
|
|