Gå til innhold

Feil i phpscript


Anbefalte innlegg

<?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.

 

:ermm:

 

Dette er hele scriptet, bortsett fra påloggingsinformasjonen til db.

 

edit: la til feilmeldingen som oppsto :)

Endret av fjartan
Lenke til kommentar
Videoannonse
Annonse

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
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 :D

 

 

edit: fungerte ikke :cry:

Endret av fjartan
Lenke til kommentar

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
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 :p
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. :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...