Hej greken :)
Får se om jag kan hjälpa dig med det här. ;)
* Har jag gjort rätt med att deklarera de olika variablerna i början? Kan jag komma åt en protected (som password) i alla funktioner inom klassen? Finns det överhuvudtaget ngt syfte att sätta variabeln till protected?
Ja, du har gjort rätt som deklarerar dina variabler i början. Däremot fungerar inte nyckelordet 'protected' som du tror, 'protected' används för variabler som subklasser/underklasser ska kunna läsa/använda sig av. Alltså när man arbetar med arv. Du kommer däremot åt den överallt i klassen User. 'private'-variabler kommer endast klassen User åt, inte klasser som ärver från User. Så i ditt fall borde även '$password' vara deklarerad som privat. (Om du inte ska arbeta med arv.)
* Konstruktorn är i detta fall lämnad helt tom. Behöver då denna existera i koden? Bör jag sätta in alla variabler (dvs: $this->.. som finns i alla funktioner) i konstruktorn istället? Vill undvika att behöva slänga med alla variabler när man kör klassen, då inte alla behövs i alla funktioner. Eller MÅSTE jag deklarera alla variabler i konstruktorn?
Ta bort konstruktorn. Om du inte har någonting som måste initieras när klassen initieras behövs inte en konstruktor.
* Är ctrlUser rätt tänkt, dvs. att jag satt den till boolean function samt att den returnerar det den ska?
Ja, det tycker jag är rätt tänkt.
* Går det bra att returnera det script jag har för att generera meddelandet på sidan?
Nja, det beror på hur du anropar/placerar det när det returneras. T.ex. inom body-taggarna på sidan fungerar alldeles utmärkt, men sidan kommer ändå att laddas klart innan javascriptet körs. Det kanske vore bättre att sätta en omdirigering direkt i PHP istället?
header("Location: sida.php?msg=" . $msg);
Däremot tycker jag inte att det här passar in i din klass. Det är något som borde skötas utanför klassen, där klassen används.
* Måste jag alltid deklarera mysql_query med $this-> eller körs de som står "lösa" korrekt?
'$this' behöver du inte använda alls egentligen, så länge de lokala variablerna (lokala för funktionen/metoden) inte är döpta till samma sak som instansobjekten/instansvariablerna (klassens variabler). Däremot ökas förståelsen för koden och läsbarheten blir bättre om man visar att det är en instansvariabel/instansobjekt och inte en lokal variabel som används.
Hoppas det blev något klarare.
Med vänliga,
Blömpa ;)