16. oktober 2007 - 09:15
Der er
11 kommentarer og 1 løsning
Insert into SQL virke ikke?
Hej kan i hjælpe mig med at se hvad der er galt? $log = echo "oprettet | '".date("d-m-Y")."' | '".date("H-i")."' | '".$username."' logget ind"; mysql_query("INSERT INTO dhu_log ( log ) VALUES ( '$log' )") or die (Java::Alert("MySQL Error: ".mysql_error()));
Annonceindlæg fra NetNordic
16. oktober 2007 - 09:19
#1
SQL er ikke begejstret for at du inkludere '-tegn i din $log. Disse bruges jo også til at vise start og slut af et stykke tekst overfor SQL. Sådan? $log = echo "oprettet | '".date("d-m-Y")."' | '".date("H-i")."' | '".$username."' logget ind"; $log = mysql_real_escape_string($log); mysql_query("INSERT INTO dhu_log ( log ) VALUES ( '$log' )") or die (Java::Alert("MySQL Error: ".mysql_error()));
16. oktober 2007 - 09:25
#2
virker desvære stadig ikke. The website cannot display the page HTTP 500 Most likely causes: The website is under maintenance. The website has a programming error. What you can try: <?php include("func.php"); DB::Conn("open"); session_start(); // check is form is submittet if (isset($_POST['submit'])) { // cleans up the username and password to work with the database, and to help prevent fraud logins $username = trim($_POST['username']); $password = md5(trim($_POST['password'])); // if the username and / or password is empty report it to user and return if(!$username || !$password){ Java::Alert("Husk alle felter!"); Java::GoToURL("index.php?page=manage"); die; } // Searches the database for a user ho match the posted username $result = mysql_query("SELECT * FROM dhu_users WHERE username = '$username' LIMIT 1"); // Loops through the result to match a user and password, then starts a session to keep them logged in while($r=mysql_fetch_assoc($result)){ if(($r['username'] == $username) && ($r['password'] == $password)){ // Sets the session's name session_name("sid"); // Starts the session session_start(); // Sets the username in the session to be passed from page to page $_SESSION['username'] = $username; $_SESSION['status'] = $r['status']; $_SESSION['level'] = $r['level']; $_SESSION['name'] = $r['name']; $log = echo "oprettet | ".date("d-m-Y")." | ".date("H:i")." | ".$_SESSION['username']." logget ind"; $log = mysql_real_escape_string($log); mysql_query("INSERT INTO dhu_log ( log ) VALUES ( '$log' )") or die (Java::Alert("MySQL Error: ".mysql_error())); }else{ // kills the script if something didn't match up above Java::Alert("Dit brugernavn eller password er forkert. Prøv igen"); Java::GoToURL("index.php?page=manage"); die; } } // Checks to make sure the session's username was set, or kills the script if(empty($_SESSION['username'])){ Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin"); Java::GoToURL("index.php?page=manage"); die; } // Go back to form_login Java::GoToURL("index.php?page=manage"); }else{ // Stop siden og gå tilbage "hackker" Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin"); Java::GoToURL("index.php?page=manage"); } ?>
16. oktober 2007 - 09:36
#3
Tja, nu er det i hvert fald ikke SQL'en som den fejler på. Umiddelbart kan jeg ikke se hvad der ellers skulle være i vejen med din kode. Dest skulle da lige være hvis der var en fejl i en af de mange Java-kald.
16. oktober 2007 - 09:37
#4
Forresten - du kalder session_start() 2 gange i koden. Den i din while-løkke skal fjernes.
16. oktober 2007 - 09:55
#5
har altid brugt den metode med at kalde den der også men har fjernet den og virker stadig ikke udkommentere jeg SQL delen virker login siden fint!
16. oktober 2007 - 10:09
#6
Lyder mystisk. En SQL fejl burde ikkt få den til at styrte på den måde. Men prøv så med noget debugning: $log = echo "oprettet | " . date("d-m-Y") . " | " . date("H:i") . " | " . $_SESSION['username'] . " logget ind"; $log = mysql_real_escape_string($log); $sql = "INSERT INTO dhu_log (log) VALUES ('$log')"; echo "DEBUG: $sql<br>"; // mysql_query() or die (Java::Alert("MySQL Error: " . mysql_error())); Hvad udskriver dette?
16. oktober 2007 - 10:14
#7
jeg er helt på bunden her vis jeg bruger echo "bla bla"; laver den HTTP 500 error men bruger jeg print(""); så skriver den bare 1 i databasen oprettet | 16-10-2007 | 10:12 | nick logget indDEBUG: INSERT INTO dhu_log (log) VALUES ('1') :S
16. oktober 2007 - 10:19
#8
Prøv lige at rette: $log = echo "oprettet | " . date("d-m-Y") . " | " . date("H:i") . " | " . $_SESSION['username'] . " logget ind"; til: $log = "oprettet | " . date("d-m-Y") . " | " . date("H:i") . " | " . $_SESSION['username'] . " logget ind";
16. oktober 2007 - 10:27
#9
:D yes problemet var nemlig at echo ikke skulle være der :P tak $log = "oprettet | " . date("d-m-Y") . " | " . date("H:i") . " | " . $_SESSION['username'] . " logget ind"; mysql_query("INSERT INTO dhu_log (log) VALUES ('$log')") or die (Java::Alert("MySQL Error: ".mysql_error())); dette virker.
16. oktober 2007 - 10:30
#10
Svar :^)
16. oktober 2007 - 10:32
#11
her :P
16. oktober 2007 - 10:34
#12
Du kan godt have '-tegn i din $log, men så skal mysql_real_escape_string() kaldes. I øvrigt bør du også kalde mysql_real_escape_string() på dine login oplysninger da du ellers er sårbar overfor SQL-injection: $username = mysql_real_escape_string(trim($_POST['username'])); $password = md5(trim($_POST['password']));
Vi tilbyder markedets bedste kurser inden for webudvikling