Gå til innhold

Feil i phpscript


Anbefalte innlegg

Skrevet (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.

 

:ermm:

 

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

 

edit: la til feilmeldingen som oppsto :)

Endret av fjartan
Videoannonse
Annonse
Skrevet

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

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

 

 

edit: fungerte ikke :cry:

Endret av fjartan
Skrevet (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 av Svendsen
Skrevet

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å :)

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

Skrevet

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

Skrevet
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

Skrevet

Joa, men når vi har lov til å kjøre i 80, kjører vi ikke i 50 :p

 

Adskiller de i andre programmeringsspråk :)

 

Har man lyst har man lov ;)

 

( dvs, så lenge koden fungerer :p )

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