Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
hjælp til at php kode
11-11-2013, 17:38
#1
hjælp til at php kode
hay, er der en af jer som er super til php/mysql ?
- hader mysql som pesten!!!

Det jeg prøver på at lave er:

når jeg går ind på test.php?id=124, så kigger den i img finder id, og "udskriver" data fra.. kan bare ikke få det til at virke

Har lavet det her som viser alt info fra "img" databasen, men den skal jo kun vise data ud fra det id jeg skriver.


PHP kode:
<?php
$id 
$_GET["id"];

// viser id fra test.php?id=124
echo $id;

echo 
"<br><br>";

// Connects to your Database 
mysql_connect("127.0.0.1""bruger""kode") or die(mysql_error()); 
mysql_select_db("hemlig") or die(mysql_error()); 
[/
code]
or die(
mysql_error()); 
echo 
"<table>"
while(
$info mysql_fetch_array$data )) 

echo 
"<tr>"
echo 
"<th>id:</th> <td>".$info['id'] . "</td> "
echo 
"<th>navn:</th> <td>".$info['name'] . " </td></tr>"

echo 
"</table>"
?>

tænker på noget ala:
PHP kode:
$data mysql_query("SELECT * FROM img *id=$id"

så hvis der sidder en af jer der ude der lige ved hvordan jeg fixer det, så må du gerne skrive! :D
Er ordblind, så stavefejl er gratis! XD
Ailicis.cc | Quadcopter | Bitcoin | Facebook | Skype
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 18:17
#2
RE: hjælp til at php kode
Kode:
$data = mysql_query("SELECT * FROM img where id=".(int)$id);
Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 18:45
#3
RE: hjælp til at php kode
super virker :)
- godt nok skulle jeg lige slette ; men det går :D
Er ordblind, så stavefejl er gratis! XD
Ailicis.cc | Quadcopter | Bitcoin | Facebook | Skype
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 19:49
#4
RE: hjælp til at php kode
(11-11-2013, 18:45)ailicis Skrev: super virker :)
- godt nok skulle jeg lige slette ; men det går :D

Det lyder lidt underligt, du skulle slette ;. :)
PHP kode linier afsluttes jo med ;
Men ved ikke, om det er noget man kan sætte i php.ini eller noget.
Men bare det virker.
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 20:33 (Denne besked var sidst ændret: 11-11-2013, 20:36 af ailicis.)
#5
RE: hjælp til at php kode
har jo en or die(mysql_error()); som afslutter det :P
- koden er nu
Kode:
mysql_select_db("dejligepatter") or die(mysql_error());
Er ordblind, så stavefejl er gratis! XD
Ailicis.cc | Quadcopter | Bitcoin | Facebook | Skype
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 20:57 (Denne besked var sidst ændret: 11-11-2013, 20:57 af BlimBlamBlar.)
#6
RE: hjælp til at php kode
Du bør ikke have die(mysql_error()) i din kode...allerhøjst kun i udvikling/test.
Hvem ser den fejlbesked? Det gør den bruger, som får koden til at fejle...ikke dig.
Og fejlbeskeden fra mysql kan indeholde informationer om den forespørgsel, som fejlede og andet godt. Så ved fejl bør du skrive en log besked et sted, som du har adgang til, og skrive ud til brugeren at noget gik galt...ikke en masse detaljer.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 21:00
#7
RE: hjælp til at php kode
super, tak for info.
- har ikke brugt mysql sammen med php før :)
Er ordblind, så stavefejl er gratis! XD
Ailicis.cc | Quadcopter | Bitcoin | Facebook | Skype
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 22:17
#8
RE: hjælp til at php kode
Jeg vil også lige henvise til mysql_real_escape_string() funktionen, som sikrer at id-parametren ikke kan bruges til SQLi :)
...trolling nets since 2013
Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 23:34 (Denne besked var sidst ændret: 11-11-2013, 23:48 af Doctor Blue.)
#9
RE: hjælp til at php kode
Først og fremmest vil jeg fremhæve vores shcode tags endnu engang, prøv at bruge [shcod e=php] i stedet for [php ]. Så kommer der en fin syntax highlighting på der også er synlig på vores tema.

Ydermere vil jeg foreslå at du ikke bruger et MySQL library der er deprecated og bliver udfaset i næste version af PHP.
Brug enten MySQLi (MySQL improved) eller PDO.
Læs på http://dk1.php.net/manual/en/mysqli.overview.php i afsnittet http://dk1.php.net/manual/en/mysqli.overview.php.

Hvis jeg skulle revidere din kode ville det se nogenlunde sådan her ud:
<?php
// Opret forbindelse til databasen
$db = new mysqli("127.0.0.1", "bruger", "kode", "database");
// Undgå SQL injection ved at sætte backslash før specialtegn i GET-værdien
$id = $db->real_escape_string($_GET["id"]);
// Send en anmodning og opbevar resultatet i $result
$result = $db->query("SELECT * FROM `img` WHERE `id` = $id");

// Vis GET-værdien for en sikkerheds skyld
echo $id;
echo "<br /><br />";
// Fyld resultat fra forespørgslen ind i en tabel
echo "<table>";
while($row = $result->fetch_object()){ // Hent den næste række ind i $row
echo "<tr>";
echo "<th>id:</th><td>" . $row->id . "</td>";
echo "<th>navn:</th><td>" . $row->name . " </td></tr>";
}
// Afslut tabel
echo "</table>";
// Luk forbindelse til databasen
$db->close();
?>

@BlimBlamBlar hvad er idéen i at typecaste til integer? Hvis ikke det var fordi PHP havde sin conversion matrix ville du bare få en parserfejl. Det giver overhovedet ingen mening.

EDIT: Som de andre siger, så sørg for at holde fejlene væk fra brugerne.
Hvis der sker en fatal fejl skal du give en exception og vise brugeren en besked á la "Beklager, men siden har nogle problemer i øjeblikket. Vi kigger på det hurtigst muligt.".
Når du debugger skal du enten bruge logfilen eller den indbyggede funktion der kan sende log-entries til din e-mail addresse. Hvis du har direkte adgang til serveren og den er linux-baseret kan jeg anbefale dig at bruge
Kode:
tail -f error.log
som vil vise dig fejlloggen og løbende opdaterer når der kommer noget nyt.
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
11-11-2013, 23:39 (Denne besked var sidst ændret: 11-11-2013, 23:44 af Morph3s.)
#10
RE: hjælp til at php kode
(11-11-2013, 23:34)Doctor Blue Skrev: Hvis jeg skulle revidere din kode ville det se nogenlunde sådan her ud:
<?php
// Opret forbindelse til databasen
$db = new mysqli("127.0.0.1", "bruger", "kode", "database");
// Undgå SQL injection ved at sætte backslash før specialtegn i GET-værdien
$id = $db->real_escape_string($_GET["id"]);
// Send en anmodning og opbevar resultatet i $result
$result = $db->query("SELECT * FROM `img` WHERE `id` = $id");

// Vis GET-værdien for en sikkerheds skyld
echo $id;
echo "<br /><br />";
// Fyld resultat fra forespørgslen ind i en tabel
echo "<table>";
while($row = $result->fetch_object()){ // Hent den næste række ind i $row
echo "<tr>";
echo "<th>id:</th><td>" . $row->id . "</td>";
echo "<th>navn:</th><td>" . $row->name . " </td></tr>";
}
// Afslut tabel
echo "</table>";
?>

@BlimBlamBlar hvad er idéen i at typecaste til integer? Hvis ikke det var fordi PHP havde sin conversion matrix ville du bare få en parserfejl. Det giver overhovedet ingen mening.

Ville intval ikke være mere passende når værdien er int ? Tænker bare at man stadig ville kunne skrive noget tekst. Ikke at det hjælper, men så er man mere sikret mod fejl.

Og mht. BlimBlamBlar's int cast. Det er vel en form for at validere den parameter. Selvom jeg ikke ville bruge den løsning, virker det som det eneste logiske.
Den vil jo smide en fejl så snart du prøver på SQL injection.
Følg mig på twitter: https://twitter.com/Morph3s
Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)