Avatar billede perh Juniormester
21. december 2003 - 17:38 Der er 27 kommentarer og
1 løsning

skrive navn på $remote_user

jeg har en php-side, hvor jeg vil skrive navnet på den, der logger ind, lidt i stil med "Velkommen Peter Hansen", men jeg skal bruge det til andet på andre sider også (plus til mail afsendelse).

jeg kan gøre det sådan:
if ($REMOTE_USER == "854b6b") {$Navn = 'Peter Hansen';}
    echo "$Navn";
men der er mange brugere, så er der en smart måde at lægge if´en ud i en løs fil med en lettere måde at finde brugernavnet på?
Avatar billede the_legend Nybegynder
21. december 2003 - 17:39 #1
lave et login system?
Avatar billede billen Nybegynder
21. december 2003 - 17:39 #2
bruger du ikke en database?
Avatar billede perh Juniormester
21. december 2003 - 17:43 #3
Det er kun brugere i en brugergruppe, der har adgang.
Det er ca 50.
Jeg forestillede mig at putte sammenhørende værdier af loginnavn og Navn i en hash og løbe det igennem?
Avatar billede fangel Nybegynder
21. december 2003 - 17:46 #4
det _KAN_ du sagtens, men en database vil til en hver tid være at foretrække - det vill jeg have gjordt ved den 5. bruger ;)... databaser er bare lækre at arbejdre med

men du _KAN_ sagtens lave det i arrays og bruge lidt assorterede array funktioner http://php.net/array

Morten
Avatar billede perh Juniormester
21. december 2003 - 17:49 #5
hvordan kan jeg gøre det med en database?
Avatar billede fangel Nybegynder
21. december 2003 - 17:51 #6
jeg ved ikke lige hvad du har... men ville lave en tabel med

ID
Loginnavn
Kode
FuldtNavn

og så lave en selects på det...

Morten
Avatar billede perh Juniormester
21. december 2003 - 17:57 #7
Så koder jeg det nok bare ind som skitseret i mit spørgsmål med hver bruger/Navn i en ifelse række :-(
Avatar billede fangel Nybegynder
21. december 2003 - 18:00 #8
så lav det hellere som array

$users['854b6b'] = "peter hansen";
$users['7689412'] = "Morten Fangel";

$remote_user = '854b6b';
echo $users[$remote_user]; // peter hansen

Morten
Avatar billede perh Juniormester
21. december 2003 - 18:17 #9
Ja, det var sådan noget jeg var ude efter.
$REMOTE_USER oprettes jo automatisk, når brugeren logger ind og bæres videre.
Jeg har sammenhørende  login/navn i en excelfil, så jeg kan bare kommaseparere de sammenhørende par og kalde det @users ikke? eller er det #users ?

så mangler jeg bare at få det lagt udenfor php-filerne og kunne kalde det fra php-filen, der lige skal bruge det?
Avatar billede fangel Nybegynder
22. december 2003 - 15:06 #10
uvidst... men du kan godt lave noget kommasepereret fil-sjov...

variabler hedder altid $varname (fx $users) hvis det er det du fisker efter ;)

fx

--- brugere.data ---
mfa, morten fangel
knaldhat, peter hansen
juler, jule m anden
---

--- side.php ---
<?php

function findRealName($username){
  $users = file('brugere.data');
  foreach($users AS $user){
    $tmparr = @explode(', ', $user);
    if(! $tmparr) break; // invalid line
    if($username == $tmparr[0]){
      return $tmparr[1];
      break;
    }
  }
}

$username = 'mfa';
$realname = findRealName($username); // morten fangel

?>
---

sådan noget i den dur?

Morten
Avatar billede perh Juniormester
22. december 2003 - 17:01 #11
Ja, det ligner noget jeg kan bruge.
Men jeg kører ikke MySql så "AS" er vel ikke gangbar: foreach($users AS $user){
og det giver heller ikke resultat?
Avatar billede fangel Nybegynder
22. december 2003 - 17:03 #12
ser bort fra kodefejl - men det er ikke database.. det er en standard PHP array funktion...

http://php.net/foreach

laver lige lidt test af det - for at sikkert lavet en stenet fejl et sted... koden var skrevet on-the-fly i tekstboksen ;)

Morten
Avatar billede fangel Nybegynder
22. december 2003 - 17:10 #13
det virker fint... den skriver ikke noget ud - men $realname indeholder det rigtige ;)

Morten
Avatar billede fangel Nybegynder
22. december 2003 - 17:12 #14
mine filer:

http://mfa.ath.cx/E/442523/users.php
http://mfa.ath.cx/E/442523/brugere.data

læg mærke til at der skal være ", " - altså komma + mellemrum mellem brugere...

Morten
Avatar billede perh Juniormester
22. december 2003 - 17:24 #15
Smart, jo - nu jeg har ryddet nogle mellemrum væk, så virker det minsandten. Det er en flot løsning, tak skal du have.
Send et svar, så du kan få dine point.
Avatar billede perh Juniormester
22. december 2003 - 17:25 #16
nå, jeg havde allerede fjernet mellemrummet der i koden i stedet.
Avatar billede fangel Nybegynder
22. december 2003 - 17:27 #17
nu er den lige glad med mellemum...

function findRealName($username){
  $users = file('brugere.data');
  foreach($users AS $user){
    $tmparr = @explode(',', $user);
    if(! $tmparr) break; // invalid line
    if($username == trim($tmparr[0])){
      return trim($tmparr[1]);
      break;
    }
  }
}

Morten
Avatar billede perh Juniormester
22. december 2003 - 17:45 #18
Fint, jeg opretter lige et nyt spørgsmål i forlængelse af det her, da jeg gerne vil have bruger.data krypteret, bare på en enkel simpel måde, om muligt selv om den ligger i en passwordbeskyttet mappe.
Avatar billede fangel Nybegynder
22. december 2003 - 17:46 #19
du kan bare smide spm'et her - jeg svare gerne...

Morten
Avatar billede fangel Nybegynder
22. december 2003 - 17:49 #20
eller - kan ikke lige finde en god krypterings funktion...

men bare læg data filen et sted du ikke kan nå via webserveren, og så opdater stien til filen i file(); linien

Morten
Avatar billede perh Juniormester
22. december 2003 - 17:59 #21
Ja, det var noget nemmere
Avatar billede perh Juniormester
27. december 2003 - 15:10 #22
jeg kommer lige tilbage:
Jeg bruger den sidste udgave af scriptet herover, og kalder det sådan $adresse = findRealName($username);
men jeg har et problem med at få det returneret i rette format, eller jeg kender php for dårligt:
mine adresser som scriptet returnerer fra bruger.data ser sådan ud: "Hovedgaden 28\nPostboks1234\nSt Nyby" fordi jeg gerne ville have linieskift.
Men det får jeg ikke når jeg indsætter "$adresse".
Men jeg kan sagtens få linieskift hvis jeg selv skriver
$adresse = "Hovedgaden 28\nPostboks1234\nSt Nyby" og indsætter "$adresse"

Hvordan kan jeg få return sådan at linieskiftene virker?
Avatar billede fangel Nybegynder
27. december 2003 - 15:22 #23
fordi den bare tager hver linie som en ny bruger... derfor skal du indsætte et andet tegn for linieskift eller ændre koden en del...

Morten
Avatar billede perh Juniormester
27. december 2003 - 15:44 #24
min bruger.data indeholder
bruger1,Hovedgaden 28\nPostboks1234\nSt Nyby
bruger2,Storgade 12\nBox 14\nUdby
...osv

Jeg vil bare have "oversat de "\n" til linieskift, når det bliver skrevet på siden (ligesom, hvis jeg selv havde skrevet $adresse = "Hovedgaden 28\nPostboks1234\nSt Nyby" for det giver linieskift.
Avatar billede fangel Nybegynder
28. december 2003 - 17:01 #25
as said - scriptet tager liniskift (\n) som værende "nu begynder en ny bruger"... derfor kan du fx indsætte <br> istedet for liniskift...

Morten
Avatar billede perh Juniormester
28. december 2003 - 17:19 #26
Scriptet returnerer faktisk den rigtige streng med \n
og det er rigtigt at hvis jeg indsætter <br> får jeg det delt op i linier, hvis jeg kalder det fra en php side og får det skrevet ud i browseren.

Det er mig , der blander 2 ting sammen, for jeg sender det hele til en pdf-generator som returnerer siden i pdf-format, og det er pdf-generatoren der ikke vil genkende \n fra scriptet, selv om den laver korrekt linieskift, hvis jeg selv skriver en skalar i det jeg sender til pdf´en, der indeholder \n .
Mystisk, men det er så noget med den pdf-generator.

Tak for hjælpen.
Avatar billede fangel Nybegynder
28. december 2003 - 17:21 #27
hmm - kører du windows eller linux ? for de bruger lidt forskellige fortolkelser af nylinie...

windows = \n
linux = \n\r
mac = \r (tror jeg nok)

Morten
Avatar billede perh Juniormester
28. december 2003 - 18:29 #28
Det er linux, jeg har prøvet med med \n\r men det hjælper ikke. Problemet ligger i pdf-generatoren, der fortolker \n i den streng jeg henter udefra anderledes end \n i en skalar indsat på den php-side den bliver kaldt fra.

Så jeg må have fat i ophavsmanden.
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