Gå til innhold

Oppdatert2: Hva er galt med koden min? :/


Anbefalte innlegg

Hei hei, er ganske ny på både php, html og ja alt nesten hehe ;P

Har lest noen tutorials og sånt på html, og det er så lett uansett hehe..

Men til php kjøpte jeg en bok som heter Webprogrammering i PHP (den er på norsk), og har lest den i sommerferien :)

Den var veldig bra, men det er mye jeg lurer på og sånt og jeg får mange errors når jeg prøver meg på noe hehe.. Men nå har jeg hvertfall blitt kvitt errorene i mitt første registrerings script, men det funker fortsatt ikke :dontgetit:

 

http://pastebin.com/m3e238c79

Databasen:

http://silentium-guild.org/upload/images/kapli/oppsett.jpg

 

Enlighten me :)

 

Ty in advance

-Kapli

 

Oppdatert: Les siste post

Update2: Les siste post igjen :)

Endret av Kapli
Lenke til kommentar
Videoannonse
Annonse

Så kjapt over det, men;

 

$_POST["bruker"] = $bruker;

$_POST["passord"] = $passord;

$_POST["epost"] = $epost;

$_POST["fnavn"] = $fnavn;

$_POST["enavn"] = $enavn;

 

Prøv å bytte plass på $_POST og variablen. (Motsatt side av likhetstegnet).

Lenke til kommentar

Skal man ikke definere hvilke felter man setter verdiene inn i når man kjører en insert-spørring? Slik som dette :

 

$sql = "INSERT INTO `blog_posts` (`post_id`, `title`, `short`, `longst`, `user_id`, `date`, `status`) VALUES (NULL, '$title', '$short', '$long', $author, NOW(), $status);";

 

(eksempel fra et av mine script)

 

 

Om det er oppsettet ditt på bildet så skal id bli satt inn automagisk ja..

Endret av gather
Lenke til kommentar

$sql = "INSERT INTO webside VALUES ('$bruker', '$passord', '$epost'";

if(!empty($fnavn)) {

$sql .= ", '$fnavn'";
}

if(!empty($enavn)) {

$sql .= ", '$enavn'";
}

$sql .= ");";

 

Du har ikke spesifisert hvilke felter values skal inn i. Rett syntax er

INSERT INTO tabell (felt1,felt2,felt3,...,feltN) VALUES (verdi1,verdi2,verdi3,....,verdiN)

Når du bruker variabler inne i en streng, så sette dem inne i { }, det gjør det enklere for php å finne ut hvor variablen start og stopper.

 

Så du må endre til noe slikt:

PHP
<?php

$sql = "INSERT INTO webside (bruker,passord,epost"; 

 

if(!empty($fnavn)) 

  $sql.= ',fnavn')

if(!empty($enavn)) 

  $sql.=',enavn';

$sql.=") VALUES ('{$bruker}', '{$passord}', '{$epost}'";

if(!empty($fnavn)) 

  $sql .= ", '{$fnavn}'";

if(!empty($enavn)) 

  $sql .= ", '{$enavn}'";

$sql .= ")";

 

mysql_query($sql)||die('<div>Feil i: '.$sql. '<br />Mysql: '.mysql_error().'</div>');

?>

Endret av crowly
Lenke til kommentar

Man må ikke

 

INSERT INTO blabla

VALUES ('bla', 'bla', 'bla');

 

Skal funke helt fint, men jeg er litt usikker nå hvis jeg må spesifisere ID hvordan skal jeg da få den riktige? ID er jo satt til auto_increment. Det kan være man må gjøre som han over meg, men da oppstår et annet problem. Hvordan skal jeg legge til fornavn og etternavn ettersom om de fins eller ikke :S

 

Edit: Takk crowly, prøver meg på det og kommer med resultatet snarlig :!:

Smart hehe

Endret av Kapli
Lenke til kommentar

PHP
<?php

 

$var "";

 

echo ( isset( $var ) ) ? "Sant" "Feil";

echo ( empty( $var ) ) ? "Sant" "Usant";

/*

 * Begge vil returnere "Sant" iom at $var er satt, men den er tom.

 * Fjerner du $var = "", vil den isset returnere "Feil", 

 * men empty() vil fortsatt være sann.

 * Endrer du verdien til $var til noe helt annet

 * vil isset være sann, men empty() vil være "Usant"

 */

 

?>

Endret av M4rTiN
Lenke til kommentar

Du må ikke spesifisere id i INSERT når du har auto_increment, mysql setter den verdien selv.

 

Hvis du ønsker å ha brukernavn i stedet for fnavn når fnavn er blank/tom så gjør slik

PHP
<?php

$sql = "INSERT INTO webside (bruker,passord,epost,fnavn"; 

if(empty($fnavn)) 

  $fnavn=$bruker;

 

if(!empty($enavn)) 

  $sql.=',enavn';

$sql.=") VALUES ('{$bruker}', '{$passord}', '{$epost},'{$fnavn}''";

if(!empty($enavn)) 

  $sql .= ", '{$enavn}'";

$sql .= ")";

 

mysql_query($sql)||die('<div>Feil i: '.$sql. '<br />Mysql: '.mysql_error().'</div>');

?>

Endret av crowly
Lenke til kommentar

Når man utvikler skjerma funksjoner med post/get så er det veldig nyttig å legge til

PHP
<?php

echo '<pre>';

// bytt ut med $_GET når nødvendig

print_r($_POST);

echo '</pre>';

?>

i starten av skriptet, da får du en lett lesbar utskrift av inneholdet i $_POST eller $_GET variablen (eller andre arrays), og ser hvilket felter som er satt eller ikke.

Lenke til kommentar

Hei igjen, tenkte jeg skulle spørre noen fler spørsmål siden supporten her er så bra :D

Noen som skal på The Experience i høst ferien her btw?

Her er da registrerings scriptet (som funker helt fint :D )

http://pastebin.com/m4b0c2fe5

Og her er logg inn scriptet

http://pastebin.com/m2e18b389

 

Skal seff gjøre mer på logg inn scriptet senere, det funket hvis jeg ikke brukte md5().

Her er hva som skjer:

INSERT INTO webside (bruker, passord, epost, fornavn, etternavn) VALUES ('kapleh', '8c476157cc6fdef856a880ad5d19edc5', 'kim', 'kim', 'hovden');

 

og

 

SELECT * FROM webside WHERE bruker = 'kapleh' AND passord = '8c476157cc6fdef856a880ad5d19edc5';

 

Og her er passordet som står i databasen:

8c476157cc6fdef856a8

Jeg forstår ikke, hvorfor blir ikke riktig md5 hash satt inn og tatt ut :S

Har også prøvd med mysql funksjonen PASSWORD(), det funket heller ikke.

 

Any help appreciated as always :)

- Kapli

Lenke til kommentar

Sånn som jeg forstår det så er det fordi passord-feltet i databasen er VARCHAR(20) og derfor tar den bort resten av det hashede passordet i databasen? Prøv å endre det til VARCHAR (30) eller (35)

(leste feil i phpMyAdmin, var varchar ja...)

Endret av Intramin
Lenke til kommentar
Gjest Slettet+142

Jeg antar du mener VARCHAR, Intramin.

Men den lengste hashen som er av typen PASSWORD() i min login-tabell er 41 tegn lang, såeh..

Selv har jeg satt feltet til VARCHAR(50) ;)

 

Ellers kan man lese http://php.net/md5 og se at returverdien er en streng på 32 tegn..

Endret av Slettet+142
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å
×
×
  • Opprett ny...