Gilbert Skrevet 5. februar 2004 Del Skrevet 5. februar 2004 (endret) <?php $refurl = $_GET['refurl']; if (isset($_GET['refurl']) && !empty($_GET['refurl'])) { $dbc = mysql_connect("$Host", "$DBU", "$DBP"); if (!$dbc) { echo "Kunne ikke koble til databasen!"; exit(); } mysql_select_db($DBName,$dbc) or die ("Error"); $finnes_q = mysql_query("SELECT * FROM ads_inn WHERE url = '".$refurl."'") || die(mysql_error()); $finnes = mysql_num_rows($finnes_q); if ($finnes == "0") { mysql_query("INSERT INTO ads_inn (id,url,hits) VALUES('','$refurl','1')") || die(mysql_error()); } else { mysql_query("UPDATE ads_inn SET hits=hits+1 WHERE url = '".$refurl."'") || die(mysql_error()); } } else { mysql_query("UPDATE ads_inn SET hits=hits+1 WHERE url = 'ukjent'") || die(mysql_error()); } header("Location: http://www.url.no"); ?> Får feil på $finnes_q, mysql_num_rows(): supplied argument is not a valid MySQL result resource. Dette er hele scriptet, bortsett fra påloggingsinformasjonen til db. edit: la til feilmeldingen som oppsto Endret 5. februar 2004 av fjartan Lenke til kommentar
Gruzuk Skrevet 5. februar 2004 Del Skrevet 5. februar 2004 Hvorfor skriver du: $finnes_q = mysql_query("SELECT * FROM ads_inn WHERE url = '".$refurl."'") og ikke: $finnes_q = mysql_query("SELECT * FROM ads_inn WHERE url = $refurl") Nå er jeg ikke helt sikker, men slik jeg har opplevd det sjkker php på variabler inne i dobbeltfnutter ("), men ikke i enkeltfnutter (') så jeg tror ikke du trenger å legge til ' som sakt, ikke sikker, men jeg tror det skal løse noe i alle fall... Lenke til kommentar
Gilbert Skrevet 5. februar 2004 Forfatter Del Skrevet 5. februar 2004 forsøker å skrive så ren mysql-kode som mulig.... forsøkte tipset ditt, men sorry mac Lenke til kommentar
Gilbert Skrevet 5. februar 2004 Forfatter Del Skrevet 5. februar 2004 (endret) Nå er jeg ikke helt sikker, men slik jeg har opplevd det sjkker php på variabler inne i dobbeltfnutter ("), men ikke i enkeltfnutter (') så jeg tror ikke du trenger å legge til ' $var = "hei"; echo "$var"; // hei echo '$var'; // $var I mysql er det slik at hvis variabel er tall, skal man bruke = '$var' men hvis det er en tekst skal man bruke LIKE . Btw, - det har jeg ikke sjekket ut her, prøver det edit: fungerte ikke Endret 5. februar 2004 av fjartan Lenke til kommentar
Svendsen Skrevet 5. februar 2004 Del Skrevet 5. februar 2004 (endret) blir det ikke slik: $finnes_q = mysql_query("SELECT * FROM ads_inn WHERE url = '$refurl'") EDIT: med singel quote rundt det du sjekker mot ( her variablen) Endret 5. februar 2004 av Svendsen Lenke til kommentar
Klette Skrevet 5. februar 2004 Del Skrevet 5. februar 2004 Nå har jeg ikke testet koden, men det er jo verdt et forsøk <?php $refurl = $_GET['refurl']; if (isset($_GET['refurl']) && !empty($_GET['refurl'])) { $dbc = mysql_connect("$Host", "$DBU", "$DBP"); if (!$dbc) { echo "Kunne ikke koble til databasen!"; exit(); } mysql_select_db($DBName) or die ("Error"); $refurlSafe = addslashes($refurl); $finnes_q = mysql_query("SELECT * FROM ads_inn WHERE url = '$refurlSafe' LIMIT 1") or die(mysql_error()); // Her kan du debugge querien din ved å sette inn "echo $finnes_q;" $finnes = mysql_num_rows($finnes_q); if ($finnes == "0") { mysql_query("INSERT INTO ads_inn (id,url,hits) VALUES('','$refurlSafe','1')") or die(mysql_error()); } else { mysql_query("UPDATE ads_inn SET hits=hits+1 WHERE url = '$refurlSafe'") or die(mysql_error()); } } else { mysql_query("UPDATE ads_inn SET hits=hits+1 WHERE url = 'ukjent'") or die(mysql_error()); } header("Location: http://www.url.no"); ?> Burde være sikker mot Injection Exploits også Lenke til kommentar
Gilbert Skrevet 5. februar 2004 Forfatter Del Skrevet 5. februar 2004 men klette, dette er helt genialt. tusen takk Lenke til kommentar
Torbjørn Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 det forklarer ikke hvorfor eksemplet til fjartan ikke fungerer... Lenke til kommentar
Klette Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Generell feil bruk av " og ' . Lenke til kommentar
sven-o Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Generell feil bruk av " og ' . Kan du presisere? I min verden er ikke "SELECT * FROM ads_inn WHERE url = '".$refurl."'" feil. Ikke php sin verden heller... Lenke til kommentar
Gilbert Skrevet 6. februar 2004 Forfatter Del Skrevet 6. februar 2004 jeg har ikke hatt noen problemer med ' ".$var." ' før, så kan ikke forstå at det er problemet nå. men som torbjørn sier, er veldig nysgjerrig på hvor problemet egentlig ligger, slik at jeg kan få gjort noe med det til neste gang.... Lenke til kommentar
Klette Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Vel i min verden, fungerte scriptet da man endret dette Dessuten ser det bedre ut Lenke til kommentar
sven-o Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Vel i min verden, fungerte scriptet da man endret dette Merksnodig. Jeg har aldri skrevet en SQL-streng i php uten å konkatenere variabler og strenger med punktum. Skal fungere. Dessuten ser det bedre ut I min verden ser det bedre ut å adskille variabler og strenger. I de fleste programmeringsspråk vil det feile om du ikke gjør det. Har med god programmeringsskikk å gjøre. Selv om php godtar donald-kode, betyr ikke det av vi må skrive det. Lenke til kommentar
Gilbert Skrevet 6. februar 2004 Forfatter Del Skrevet 6. februar 2004 donaldkode *ler* Lenke til kommentar
sven-o Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 donaldkode *ler* *bukker* Lenke til kommentar
Klette Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Joa, men når vi har lov til å kjøre i 80, kjører vi ikke i 50 Adskiller de i andre programmeringsspråk Har man lyst har man lov ( dvs, så lenge koden fungerer ) 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å