Hejsan alla glada! :)
Jag har ett problem.
Jag har suttit och tricksat, klippt och klistrat ihop dels en gästbok och en login-grejj. Det har fungerat alldeles utmärkt på min dator hemma när jag har kört med IIE...
Nu har jag skaffat webbhotellplats med PHP-stöd 4.2.3.
När jag laddar upp mina scripts fungerar varken gästboken eller login-grejjen... :(
Hur kan det komma sig? När allting har fungerat klockrent innan lokalt på min dator?
Här är koden till login-grejjen som inte fungerar. det enda som händer när jag kör den är (d.v.s om jag har rätt anv. och lösen) är att jag kommer till "authorization required"-sidan.....likaså om jag försöker lägga till en användare...
här kommer koden till det scriptet...
index.php (conn.php har jag inte lagt ut för den är OK).
<?php
session_start(); // Alltid överst på sidan
include "conn.php"; // Databasanslutningen
// Inloggning
if (isset($_POST['submit'])){
$sql = "SELECT id FROM members
WHERE user='{$_POST['user']}'
AND pass='{$_POST['passwd']}'";
$result = mysql_query($sql);
// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if (mysql_num_rows($result) == 0){
header("Location: index.php?badlogin=");
exit;
}
// Sätt sessionen med unikt index
$_SESSION['sess_id'] = mysql_result($result, 0);
$_SESSION['sess_user'] = $_POST['user'];
header("Location: welcome.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
session_unset();
session_destroy();
header("Location: index.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){
echo "<h3>Logga in</h3>\n";
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo "Fel användarnamn eller lösenord!<br>\n";
echo "Försök igen!\n";
}
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>
<br>
<a href="register.php">Registera ny användare</a>
<?php
} else {
echo "<a href=\"index.php?logout=\">Du är redan inloggad. Logga ut</a>\n";
}
?>
</body>
</html>
här kommer register .php
<?php
session_start(); // Alltid överst på sidan
include "conn.php"; // Databasanslutningen
if (isset($_POST['submit'])){
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['user']) || empty($_POST['passwd']) ||
empty($_POST['name']) || empty($_POST['email'])) {
$reg_error[] = 0;
}
// Kolla om användarnamnet är upptaget
$sql = "SELECT COUNT(*) FROM members WHERE user='{$_POST['user']}'";
$result = mysql_query($sql);
if (mysql_result($result, 0) > 0) {
$reg_error[] = 1;
}
// Kolla om e-post kan tänkas vara ok
if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,8}$/', $_POST['email'])) {
$reg_error[] = 2;
}
// Inga fel? Spara och logga in samt skicka till välkomstsida
if (!isset($reg_error)) {
$sql = "INSERT INTO members(user, pass, name, email)
VALUES('{$_POST['user']}', '{$_POST['passwd']}', '{$_POST['name']}', '{$_POST['email']}')";
mysql_query($sql);
$_SESSION['sess_id'] = mysql_insert_id();
$_SESSION['sess_user'] = $_POST['user'];
header("Location: welcome.php");
exit;
}
} else {
// Sätt variabler för tomt formulär
for ($i=0; $i<4; $i++) {
$back[$i] = "";
}
}
$error_list[0] = "Alla fält är inte infyllda";
$error_list[1] = "Användarnamnet är upptaget";
$error_list[2] = "Felaktig e-postadress";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Registrera dig</title>
</head>
<body>
<h3>Registrera dig</h3>
<?php
if (isset($reg_error)){
echo "Något blev fel:<br>\n";
echo "<ul>\n";
for ($i=0; $i<sizeof($reg_error); $i++) {
echo "<li>{$error_list[$reg_error[$i]]}</li>\n";
}
echo "</ul>\n";
$back[0] = $_POST['user'];
$back[1] = $_POST['passwd'];
$back[2] = $_POST['name'];
$back[3] = $_POST['email'];
}
?>
<form action="register.php" method="post">
<table cellspacing="3">
<tr>
<td>Användarnamn:</td>
<td><input type="text" name="user" value="<?=$back[0] ?>"></td>
</tr>
<tr>
<td>Lösenord:</td>
<td><input type="text" name="passwd" value="<?=$back[1] ?>"></td>
</tr>
<tr>
<td>Ditt namn:</td>
<td><input type="text" name="name" value="<?=$back[2] ?>"></td>
</tr>
<tr>
<td>E-postadress</td>
<td><input type="text" name="email" value="<?=$back[3] ?>"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Spara dina uppgifter">
</td>
</tr>
</table>
</form>
</body>
</html>
och här kommer welcome.php
<?php
session_start(); // Alltid överst på sidan
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])){
header("Location: failed.php");
exit;
}
//foreach($_SESSION as $key => $val) { Kollar om sessionen verkligen fungerar. Kan vara bra att ha om det blir nått strul.
// echo "$key = $val <br>";
//}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Välkommen</title>
</head>
<body>
Välkommen <?=$_SESSION['sess_user'] ?><br>
<a href="index.php?logout=">Logga ut</a>
</body>
</html>
och sist failed.php (som jag alltid kommer till även om jag skriver in rätt anv. och lösen)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<font color="#FF0000" size="-2" face="Verdana, Arial, Helvetica, sans-serif">Authorization
required!</font>
</body>
</html>
som sagt...det funkar lokalt på min dator men inte när jag tankar upp det på webbhotellet... =((
HJÄLP!!
:( :(