webForumDet fria alternativet

Include strular, tror jag?

4 svar · 675 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#1

Jag har lagt lite inställningar i en php fil för att koppla upp sig mot en MySQL databas. Tar jag ut värdena fungerar det. På andra sidor verkar det också fungera (jag är person nummer två som grejar med detta).

Det jag vill göra är en inloggningssida som när man blir inloggad sparar information i Sessionsvariablar. Är detta ett korrekt sätt inom PHP? :) Detta är mitt första "riktiga" script som jag försöker få igång...

Felmeddelanden:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/hitech/public_html/admin/logon.php on line 32

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/hitech/public_html/admin/logon.php on line 33

Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/hitech/public_html/admin/logon.php on line 18

Warning: mysql_real_escape_string(): A link to the server could not be established in /home/hitech/public_html/admin/logon.php on line 18

Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/hitech/public_html/admin/logon.php on line 18

Warning: mysql_real_escape_string(): A link to the server could not be established in /home/hitech/public_html/admin/logon.php on line 18

Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/hitech/public_html/admin/logon.php on line 40

Warning: mysql_query(): A link to the server could not be established in /home/hitech/public_html/admin/logon.php on line 40
Invalid query: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Whole query: SELECT * FROM Board WHERE UserName='' AND Password=''

Jag tolkar det som att värdena från min includefil inte fungerar i mitt script...

Jag har skrivit in radnummrerna på raderna som strular i koden. Dock borde det vara rad 32 som orsakar resten av felen där jag skapar min databaslänk (eller vad man ska säga...).

vars.php (ligger ett steg under public_html)

<?php
$db="#####";
$db_user="######";
$db_pass="#######";
$db_serv="db.ds.karen.hj.se";

$base="/home/hitech/public_html";
$base_url="http://www.hitech.nu";
?>

logon.php

<?php
	// Starta sessionen
	session_start();
	
	// Starta buffering
	ob_start();
		
	// Kontrollera variabeln för att vara säker för SQL-injections
	function quote_smart($value)
	{
		// Stripslashes
		if (get_magic_quotes_gpc()) {
			$value = stripslashes($value);
		}
		
		// Quote if not a number or a numeric string
		if (!is_numeric($value)) {
			$value = "'" . mysql_real_escape_string($value) . "'"; // Line 18
		}
		return $value;
	}

	// Kollar om vi är inloggade
	if(empty($_SESSION['loggedOn'])) {
		// Ja, kollar om användaren angett användarnamn och lösenord
		if((!empty($_POST['username'])==TRUE) and (!empty($_POST['password'])==TRUE))
			// Ja, kontrollerar om personen finns i databasen
			
			
			include "/home/hitech/vars.php";
			
			$dbhandle=mysql_connect($db_serv,$db_user,$db_pass); // Line 32
			mysql_select_db($db, $dbhandle); // Line 33
			
			// Frågar databasen med en säker fråga
			$query = sprintf("SELECT * FROM Board WHERE UserName=%s AND Password=%s",
				quote_smart($_POST['username']),
				quote_smart($_POST['password']));
			
			$result = mysql_query($query); // Line 40
			
			// Check result
			// This shows the actual query sent to MySQL, and the error. Useful for debugging.
			if (!$result) {
			   $message  = 'Invalid query: ' . mysql_error() . "\n";
			   $message .= 'Whole query: ' . $query;
			   die($message);
			} else {
				$_SESSION["loggedOn"] = TRUE;
				$_SESSION["UserID"] = 1;
				header("Location: index.php");
			}
			
			// Stänger kopplingen till databasen
			mysql_free_result ($result);
			mysql_close($dbhandle);
	} else {
		// Nej, kollar om användaren vill logga ut
		if($_GET['action'] == 'logout') {
			// Ja, förstör all data lagrad i session
			$_SESSION["loggedOn"] = FALSE;
			session_destroy();
		} else {
			// Nej, skickar tillbaka användaren till index-sidan
			header("Location: index.php");
		}
	}
?>
RamzeusMedlem sedan mars 200642 inlägg
#2

Prova att lägga till lite felhantering för att se varför du inte kan ansluta till databasservern.

T.ex lägg till så att det blir så här när du ska ansluta:
$dbhandle=mysql_connect($db_serv,$db_user,$db_pass)
or die('Could not connect: ' . mysql_error());
mysql_select_db($db, $dbhandle)
or die('Could not select database');

Jag kan också rekommendera att du kikar på några PEAR-paket som underlättar.
T.ex MDB2 för att hantera databasen och Auth för att hantera inloggningen.
Om du använder dessa paket så blir koden troligen säkrare dessutom.

Paketen finns på följande adresser:
MDB2: http://pear.php.net/package/MDB2
Auth: http://pear.php.net/package/Auth

Övriga PEAR-paket finns här: http://pear.php.net/packages.php

fiddlerMedlem sedan juli 20023 617 inlägg
#3

Har du några värden i variablerna ($db osv) efter include-satsen?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Pröva att byta

include "/home/hitech/vars.php";
// mot
require("/home/hitech/vars.php");

för att se om det kan vara så enkelt att den filen inte hittas.

liljaMedlem sedan juli 20041 183 inlägg
#5

Inget svar på många dagar och så plötsligt ramlar det in 3st av välkända wf-are :)

Hur fungerar dessa PEAR-paket? Är det något man måste installera eller inkluderar man bara det i php-filerna? Verkar vara en del bra paket? Finns det exempelkod någonstans där man använder dessa för att logga in?? Är det någon som har något emot dessa paket?

131 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)