Gå til innhold

Garanti's hjelpetråd til PHP


Anbefalte innlegg

Ok, glemte å si at jeg ikke hadde funnet en fungerende guide.

Uansett, jeg prøvde denne, men får følgende feilmelding:

 

Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. b30sm276190ika.3 in C:\wamp\www\mailing list\sendmail.php on line 3

Lenke til kommentar
Videoannonse
Annonse

Du lager en form og sender data den veiene. Det er egentlig litt misvisende å kalle det GET, for det man henter er egentlig data fra URLen og ikke fra selve GET-requesten. En GET-request sender ikke data i seg selv annet enn en forespørsel om en side. POST-request kan derimot sende data, og det skjer som data i «requesten». Dette kan du ikke få til via en URL i og med at den bare bestemmer plasseringen av noe og er, og vil heller aldri bli, en metode for å sende data gjennom. Det går såklart å bruke javascript for å et a-element til å gjøre det, men essensielt trenger du alltid en form med data i for å generere en POST-request og dermed for data til $_POST.

Lenke til kommentar

GET:

informasjon blir sendt til serveren gjennom urlen i requesten

 

brukes til å sende data til server som ikke fører til en "change of state". for eksempel verdier til pagination, brukerinnlogging eller søke-setninger.

 

POST:

informasjon blir sendt til serveren gjennom en egen request.

 

brukes i forms, spesielt dersom det fører til en "change of state" (for eksempel en database blir oppdatert som et resultat av den innsendte formen)

 

SESSION:

informasjon blir lagret på serveren med en referanse til bruker. referansen er enten en hash lagret i cookie hos bruker eller en hash overført via GET.

 

brukes for å kjenne igjen validerte brukere over flere sider. kan også brukes for å lagre informasjon om instillinger, men det er verdt å merke at dataene slettes når session er over med mindre de overføres til en database e.l.

Endret av grimjoey
Lenke til kommentar
  • 1 måned senere...

Si at man har en klasse User, som inneholder en funksjon for å lage en bruker. Videre har man et php-skript "newUser.php" som benytter klassen User for å opprette nye brukere. Er det vanlig å la validering av brukernavn og passord foregå i denne funksjonen (eller 'metode' som det vel heter i OOP), eller pleier dette å gjøres lokalt i skriptet?

 

Vil nesten tro det er best å la det ligge i metoden, og heller la den returnere en feilmelding dersom valideringen feiler?

Lenke til kommentar
  • 4 uker senere...

La oss tenke oss et følgende scenario:

Ved opprettelse av en bruker, viser det seg at brukeren gjør to feil. Han har et ugyldig brukernavn, og passordet han skrev inn for validering, samsvarte ikke med det første passordet. Nå har jeg holdt litt på med Exceptioning og slikt i PHP, men hvordan skal jeg fomidle at brukeren har gjort to feil? Med en gang try-blokken finner en exception, blir jo den kastet?

Lenke til kommentar

Vet ikke helt om Exceptions er det jeg ville brukt i et slikt scenarie (siden det som du sier gjør at man hopper ut til catch-blokken ved første feil). Hvis du ønsker å formidle flere feilmeldinger til brukeren, så kan du jo gjøre det slik (kjapt og stygt eksempel):

if(!$user_name_is_valid){ $errors[] = 'Brukernavnet er feil'; }
if(!$user_pass_is_valid){ $errors[] = 'Passordet er feil'; }
// ...
if(count($errors)) {
echo "Skjemaet ble ikke fylt ut korrekt: ". implode(', ', $errors);
}
else {
// ingen feil, opprett bruker
}

Endret av Lokaltog
Lenke til kommentar
Nå har jeg holdt litt på med Exceptioning og slikt i PHP, men hvordan skal jeg fomidle at brukeren har gjort to feil? Med en gang try-blokken finner en exception, blir jo den kastet?

 

Ville prøvd å catche exceptionen og logge den i en egen logg-klasse, la programmet gå videre til neste exception, logge den, og til slutt presenter loggen til brukeren?

Lenke til kommentar
class Validator{ ... public function isValid(); ... }
class RegexValidator extends Validator{ ... }
class EMailValidator extends RegexValidator{ ... }
class AlphaNumericValidator extends Validator{ ... }

class ValidatorCollection{ ... public function validate(); public function getErrors(); ... }

Lenke til kommentar
@erit01: Hvordan kan man catche exceptionen og likevel gå videre til neste exception? :hmm:

 

try {
$validator->validate($email);
} catch (Exception $e) {
$feedback->add('e-mail address not valid');
}


try {
$validator->validate($age);
} catch (Exception $e) {
$feedback->add('Age has to be between 10 and 110 years');
}

 

Kan dette hjelpe?

 

Btw: Jeg har totalt slutta å håndskrive slike ting for min egen del. Bruker alltid symfony når jeg programmerer php.

Lenke til kommentar

Dette hjalp!

 

Man flusher feedback til slutt da, ikke sant?

 

Edit: Ang. Symfony så vil jeg helst lage CMS-rammeverk selv. Vet ikke helt hvorfor, men det er jo utfordrende og gøy, og man lærer jo hele tiden. Holder på å lage en drøss med klasser som skal hjelpe meg :) Problemet er jo at jeg ikke på langt nær er ferdig med OOP PHP, så jeg har nok mange teknikker jeg må implementere i scriptene etterhvert.

 

Skal bli gøy hvis jeg en gang blir ferdig, for å se hvordan det evt. vil fungere.

Endret av Garanti
Lenke til kommentar

Jeg synes fremgangsmåten til erit01 ser utrolig tungvint ut, og jeg kan ikke forstå hvordan dette gir noen fordeler over fremgangsmåten jeg foreslo. Bare fordi det er mer "OO" betyr ikke at det er en glup måte å gjøre det på. Koden til erit01 gjør nøyaktig det samme som koden min - og den gir så vidt jeg vet ingen ekstra fordeler. Det eneste som skjer er at man må rote til koden, og bruke 4 ekstra linjer for hver kontroll av en variabel. Eller har jeg misforstått fullstendig? Er dette virkelig måten man bør kode på?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...