glennsjo Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 (endret) Som alt annet i IT-verdenen lærer jeg ved å prøve og feile, og nå har det stoppet seg igjen... Jeg har klart (lærte det i natt) å lage en database med tabeller og det hele, og fylt denne med informasjon. Jeg klarer til å med å printe informasjonen fra databasen til en webside. Det som imidlertid er saken, er at jeg har gitt alle "linjene" mine en unik ID. Og nå vil jeg printe ut en spesiell ID, eller dvs mer informasjon fra en ID. Er det noen som kan hjelpe meg litt på veien med kode på dette området? Dette er koden som printer alt: <?php //logger på database $connection = @mysql_connect(hhh, hhh, hhh) or die("Umulig å få kontakt med database"); //Velger database mysql_select_db(hhh); //Sender setningen mot database som skal hente ut infoen $setning = @mysql_query("SELECT * FROM kamper"); //Bruker en loop for aa faa all informasjonen ut while($kamper = @mysql_fetch_array($setning)) { //Naa er informasjonen lagret i arrays print("$kamper[hjemmelag] - $kamper[bortelag]"); } //Slutter av tabellen print('</table>'); ?> ...mens denne koden printer 28 kamper, vil jeg altså ha hjemmelag og bortelag for f.eks. kamp_id 7. Takker for hjelp, og hvis det er noe som må utgreies så si ifra! Endret 24. mai 2004 av Glenn'ern Lenke til kommentar
Pangaea Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 Veldig enkelt bare å bruke... $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id=$kamp_id"); $kamp_id er da en variabel med et nummer du spesifiserer. Lenke til kommentar
glennsjo Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 Kjempeflott! Tusen takk! Jeg tar et lite "oppfølgingsspørsmål" også; Hvordan får jeg laget linker til en side der alle fakta om da en kamp_id listes opp. Jeg har altså laget "infrastrukturen", og denne funker (filen heter kamp.php), men hva skal jeg gjøre for å kunne plukke forskjellig kamp_id til hver link? Lenke til kommentar
Gilbert Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 (endret) på en side med linker til de forskjellige kampene, skriver du en link med kamp id'en: kamp.php?id=3 og i kamp.php henter du variabelen med $kamp_id = $_GET['id']; og henter ut fra sql som Pangaea skriver. edit: man kan jo selvfølgelig hente ut siste 5 kamper og lage automatisk linker osv. oxo Endret 22. mai 2004 av fjartan Lenke til kommentar
glennsjo Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 (endret) Så det du mener er at jeg bare skal plusse det på etter det Pangae skrev? --> $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $_GET['id'];"); Det funka ikke er jeg redd... "Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in..:" Edit: prøvd forskjellige ting her, men ser ikke til å gå... Endret 22. mai 2004 av Glenn'ern Lenke til kommentar
Gilbert Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 nice try $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = '".$_GET['id']."'"); Lenke til kommentar
glennsjo Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 Hehe. Den er nå fikset. Alt fungerer strålende, og en ny, og enklere verden har åpnet seg for meg i dag Takk for hjelpen! Lenke til kommentar
Gilbert Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 bare hyggelig det vettu. bare spør igjen oxo Lenke til kommentar
???????? Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 Ikke helt bra, nå har du nettopp åpnet databasen din for en av de vanligste måtene å hace sider på. Sett ikke inn data fra en bruker uten å kontrollere de. Ta en kikk på mysql_escape_string() Lenke til kommentar
Gilbert Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 men teorien er jo rett... sikkerhet er jo en smakssak med det samme ????????, kan det være tilfelle at noen webhotel har m_e_s som en ting som all kommunikasjon til mysql går gjennom? får nemlig mistanke om det.... Lenke til kommentar
???????? Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 Det er mange webhoteller som har magic qoutes enabled, annet enn det er det ikke vanlig at hosten vil gjøre noe med data'en. En bra ting når det gjelder sikkerhet er å opprette en bruker som kun kan skrive og lese - og fjerne rettighetene til å legge til en bruker og lignende. Lenke til kommentar
glennsjo Skrevet 24. mai 2004 Forfatter Del Skrevet 24. mai 2004 (endret) Ikke helt bra, nå har du nettopp åpnet databasen din for en av de vanligste måtene å hace sider på. Sett ikke inn data fra en bruker uten å kontrollere de. Ta en kikk på mysql_escape_string() Ok. Dette var ikke særlig oppløftende. Databasen min kan komme til å bli svært omfattende, og inneholde mange timers arbeid, som jeg ikke vil gjøre igjen... Så på php.net på den stringen du skrev, men skjønte ikke særlig mye. Hvordan kan jeg få sikret databasen min? Jeg har allerede laget en egen fil der passord også videre ligger... Forøvrig undersøkte jeg mulighet for å opprette en "leser-bruker", men dette får ikke jeg gjort hos dagens leverandør (som det er uaktuelt å bytte ut pga meget god stabilitet). Endret 24. mai 2004 av Glenn'ern Lenke til kommentar
???????? Skrevet 25. mai 2004 Del Skrevet 25. mai 2004 Desverre er mange webhoteller så "vrange" at de kun lar deg opprette en bruker. Hvorfor det skyldes nok som regel at de ikke kan nok om SQL. Du bruker den funksjonen på denne måten: $navn = mysql_escape_string($_POST['navn']); Da escaper den tegn som ' og " slik at de ikke kan avslutte feltet. Hvis du lagrer passord og lignende burde dette krypteres, slik at hvis noen skulle hacke databasen og finne passord får de ikke brukt dem. md5() er veldig vansklig å kovertere tilbake fra. Lenke til kommentar
glennsjo Skrevet 25. mai 2004 Forfatter Del Skrevet 25. mai 2004 Ok. Skal vi se om jeg har forstått riktig her...: Jeg vil altså være sikret bare jeg paster den linja du skrev for eksempel på linja før $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = '".$_GET['id']."'"); ? Jeg kan forøvrig opprette flere brukere. Problemet er bare at jeg har null styring over bruker-rettigheter. Navn og passord er alt jeg får gjort noe med. Lenke til kommentar
christt Skrevet 25. mai 2004 Del Skrevet 25. mai 2004 Du bør være sikker på at det er et tall du putter inn i queryet ditt, derfor bør du gjøre følgende: $kamp_id = intval($_GET['kamp_id']); $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id); intval() konverterer det som ligger i $_GET['kamp_id'] til et tall. Lenke til kommentar
???????? Skrevet 25. mai 2004 Del Skrevet 25. mai 2004 mysql_escape_string() kjøres på variablene og ikke spørringen, ellers vil den escape tegn i spørringen også. Lenke til kommentar
ZoRaC Skrevet 26. mai 2004 Del Skrevet 26. mai 2004 Altså: $kamp_id = mysql_escape_string($_GET['kamp_id']); $kamp_id = intval($kamp_id); $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id); Lenke til kommentar
christt Skrevet 26. mai 2004 Del Skrevet 26. mai 2004 Altså: $kamp_id = mysql_escape_string($_GET['kamp_id']); $kamp_id = intval($kamp_id); $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id); Litt smør på flesk her i og med at du kun vil ha inn et tall. mysql_escape_string brukes for å sikre at strenger ikke inneholder "ulovlige" tegn. I dette tilfellet holder det med: $kamp_id = intval($kamp_id); $setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id"); Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå