webForumDet fria alternativet

if (noob){

21 svar · 449 visningar · startad av K++

K++Medlem sedan juli 2002171 inlägg
#1

Lyckades fixa alla php filer till något community com DMZ(?) hade gjort.. Jag är rätt newb på php (började igår).. Jag får felmedelandet i index.php

..
Notice: Undefined variable: userid in d:\inetpub\wwwroot\index.php on line 7
..

<?
//Starta sessionen, öppna databaskopplingen och deklarera databas-funktioner
include("dblib.php");

//Bestäm vilken sida som ska visas i huvudramen (contents)
$sida="login";
if (kolla_inloggad($userid)) { // rad 7
$sida="start";
}
?>

Vad ska jag göra?

SPiNMedlem sedan mars 20007 896 inlägg
#2

Lägga till isset( $userid ) innan du anropar funktionen kolla_inloggad().

if( isset( $userid ) && kolla_inloggad( $userid ) ) {
...
K++Medlem sedan juli 2002171 inlägg
#3

Spin = "helpmood"; §jr

SPiNMedlem sedan mars 20007 896 inlägg
#4

Du vet väl att:

is_always_helpful( "SPiN" )

Alltid returnerar:

true

:q

yazMedlem sedan maj 20021 028 inlägg
#5

hehe...äkta programmeringshumor :e

K++Medlem sedan juli 2002171 inlägg
#6

K.Forstätter mina frågor.. Har gjort enligt allt DMZ vill skapade en databas som heter dmzon med massa fält.. Men får fram Kunde ej koppla upp! Så jag undrar skulle jag skriva in något användarnamn eller lösenordcrap i mysql promten?

@mysql_connect("localhost","användarnamn","lösenord") or print("Kunde ej koppla upp!");

@mysql_select_db("dmzone");

SPiNMedlem sedan mars 20007 896 inlägg
#7

Har du någon databas som du ska använda?

I så fall:

USE dinDatabas;

Följt av:

GRANT ALL ON dinDatabas.* TO dinAnvändare@localhost IDENTIFIED BY 'dittLösenord';

Har du ingen databas, skapar du en så här:

CREATE DATABASE dinDatabas;
K++Medlem sedan juli 2002171 inlägg
#8

Jag skriver in show databases;

och får fram

+-------------+
| Database |
+-------------+
| dmzone |
+-------------+

Så jag har en databas..

testar att skriva in

GRANT ALL ON dmzon.* TO erik@localhost IDENTIFIED BY 'tipa';

K++Medlem sedan juli 2002171 inlägg
#9

Spank me det funkar! :)

K++Medlem sedan juli 2002171 inlägg
#10

hm... kan man få bort alla dessa jobbiga

Notice: Undefined variable: userid in d:\inetpub\wwwroot\left.php on line 13

Notice: Undefined variable: msg in d:\inetpub\wwwroot\login.php on line 29

Testade att lägga till if( isset( $msg ) && ((int)$msgcode>0)) { ..

fast det funkade inte...

SPiNMedlem sedan mars 20007 896 inlägg
#11

Alla notice:es kan du få bort genom att editera i php.ini, men det är bättre att kolla om de är satta. I varje if-sats där de förekommer, bör du lägga till isset() innan.

Jag tror att du också kan göra så här, om du inte vill ändra i php.ini eller lägga till isset():

error_reporting( ~E_NOTICE );

Det ska då placeras högst upp på dina sidor.

K++Medlem sedan juli 2002171 inlägg
#12

gick lite freaky på alla sidor där jag fick undefine messages

verkar vara mycket buggz i scriptet eller nu om det är jag..

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\inetpub\wwwroot\dologin.php on line 10

Warning: Cannot add header information - headers already sent by (output started at d:\inetpub\wwwroot\dologin.php:10) in d:\inetpub\wwwroot\dologin.php on line 12

<?
error_reporting( ~E_NOTICE );

//Starta sessionen, öppna databaskopplingen och
//deklarera databas-funktioner
include("dblib.php");

//Kolla om inknappade uppgifter stämmer med en post i databasen
$result=mysql_query("SELECT id,tidstampel FROM personer WHERE un=\"$un\" AND pw=\"$pw\"");
if (mysql_num_rows($result)==0) {
   //Fanns ej någon post i personer-tabellen med detta användarnamn och lösenord!
   header ("Location: login.php?msgcode=1"); // (msgcode1=Felaktiga loginuppgifter)
   exit;
}

//Registrera och sätt sessionsvariabler på servern: userid och senastinne
session_register('userid');
$userid=mysql_result($result,0,"id");
session_register('senastinne');
$senastinne=mysql_result($result,0,"tidstampel");

//Tänd inloggflagga och korrigera session_id i personer-tabellen.
//Tidstämpeln uppdateras automatiskt i MySQL.
mysql_query("UPDATE personer SET inloggad=1,session_id=\"".session_id()."\" WHERE id=$userid");

mysql_close();
//Gå till startsidan
header("Location: start.php");
?>

Vad göra nu farbror spin :D

SPiNMedlem sedan mars 20007 896 inlägg
#13

Det generella felet är att mysql_num_rows() inte kan användas, headers-felet får du just för att ett felmeddelande tidigare har ploppat fram.

Att mysql_num_rows() inte funkar, kan bero på att din SQL-fråga är skum som fasen. Se till att den ser ut så här i stället:

"SELECT id,tidstampel FROM personer WHERE un='$un' AND pw='$pw'"

Gör samma sak på de andra SQL-frågorna, alltså byt ut \" mot '. Escape-dubbelfnutt mot enkeltfnutt, alltså. :)

K++Medlem sedan juli 2002171 inlägg
#14

This is getting more and more odd.. Altså startsidan..

Kunde ej koppla upp!
Notice: Undefined variable: un in d:\inetpub\wwwroot\index.php on line 5

Notice: Undefined variable: pw in d:\inetpub\wwwroot\index.php on line 5

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\inetpub\wwwroot\index.php on line 6

Warning: Cannot add header information - headers already sent by (output started at d:\inetpub\wwwroot\dblib.php:5) in d:\inetpub\wwwroot\index.php on line 8

Bifogar denna ..... lilla kod..

dblib.php

<?

session_start();

@mysql_connect("localhost","erik","tipa") or print("Kunde ej koppla upp!");
@mysql_select_db("dmzone");

mysql_query("UPDATE personer SET inloggad=0,session_id=\"\",tidstampel=tidstampel WHERE inloggad=1 AND date_add(tidstampel,interval 300 second)+0<(now()+0)");

function inloggcheck($userid) {
   if (!kolla_inloggad($userid)) {
      header("Location: login.php?msgcode=4");
      mysql_close();
      exit;
   }
}

function kolla_inloggad($userid) {
   if ($userid>0) {
      if (mysql_num_rows(mysql_query("SELECT * FROM personer WHERE id=$userid AND session_id=\"".session_id()."\" AND inloggad=1"))>0) {
         mysql_query("UPDATE personer SET tidstampel=NULL WHERE id=$userid AND session_id=\"".session_id()."\"");
         return true;
      }
      else {
         return false;
      }
   }
   else {
      return false;
   }
}

?>

dologin.php

<?
error_reporting( ~E_NOTICE );

include("dblib.php");

$result=mysql_query("SELECT id,tidstampel FROM personer WHERE un='$un' AND pw='$pw'");
if (mysql_num_rows($result)==0) {
   //Fanns ej någon post i personer-tabellen med detta användarnamn och lösenord!
   header ("Location: login.php?msgcode=1"); // (msgcode1=Felaktiga loginuppgifter)
   exit;
}

session_register('userid');
$userid=mysql_result($result,0,"id");
session_register('senastinne');
$senastinne=mysql_result($result,0,"tidstampel");

mysql_query("UPDATE personer SET inloggad=1,session_id=\"".session_id()."\" WHERE id=$userid");

mysql_close();
header("Location: start.php");
?>

index.php

<?

include("dblib.php");

$result=mysql_query("SELECT id,tidstampel FROM personer WHERE un='$un' AND pw='$pw'");
if (mysql_num_rows($result)==0) {
	header ("Location: login.php?msgcode=1"); // (msgcode1=Felaktiga loginuppgifter)
	exit;
}

session_register('userid');
$userid=mysql_result($result,0,"id");
session_register('senastinne');
$senastinne=mysql_result($result,0,"tidstampel");

mysql_query("UPDATE personer SET inloggad=1,session_id=\"".session_id()."\" WHERE id=$userid");

mysql_close();

header("Location: start.php");
?>

include("dblib.php");

$sida="login";
if( isset( $userid ) && kolla_inloggad( $userid ) ) {

if (kolla_inloggad($userid)) {
   $sida="start";
}
}
?>
<html>
<head>
<title>DMZone</title>
<meta name="robots" content="nofollow">
</head>
<frameset framespacing="0" border="0" rows="60,*" frameborder="0">
<frame name="topframe" scrolling="no" noresize target="contents" src="top.php" marginwidth="0" marginheight="0" scrolling="no">
<frameset cols="120,*" framespacing="0" border="0" frameborder="0">
<frame name="left" src="left.php" scrolling="no" noresize marginwidth="2" marginheight="0">
<frame name="contents" src="<?=$sida;?>.php" scrolling="auto" noresize marginwidth="2" marginheight="0">
</frameset>
</frameset>
<body>
<p>DMZone kräver frames! Bums iväg och ladda ner ny webläsare.</p>
</body>
</noframes>
</frameset>
</html>

left.php

<?
include("dblib.php");
?>
<html>
<head>
<link rel="stylesheet" href="stil.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="10">
<?
//Om man är inloggad ska navigationsmenyn visas. $userid är
//sessionsvariabeln som i så fall är deklarerad av dologin.php
if (kolla_inloggad($userid)) {
   //Hämta ut användarnamnet från personer-tabellen...
   $un=mysql_result(mysql_query("SELECT un FROM personer WHERE id=$userid"),0,'un');
?>
Inloggad som <?=$un;?>.<br><br>
<a href="start.php" target="contents">Startsida</a><br>
<a href="online.php" target="contents">Onlinelista</a><br>
<a href="letaperson.php" target="contents">Sök krabater</a><br><br>
<a href="hemmis.php" target="contents">Min hemmis</a><br>
<a href="krabater.php" target="contents">Mina krabater</a><br>
<a href="gastis.php" target="contents">Min gästbok</a><br><br>
<a href="postcentral.php" target="contents">Min postcentral</a><br><br>
<a href="logout.php" target="contents">Logga ut!</a>
<?
}
mysql_close();
?>
</body>
</html>

Login.php

<?
error_reporting( ~E_NOTICE );

if( isset( $msg ) && ((int)$msgcode>0)) {
if ((int)$msgcode>0) {
   $msgs=array("Felaktiga loginuppgifter - försök igen","Du är nu utloggad. Välkommen tillbaka!","Du är nu registrerad medlem och kan logga in!","Du har blivit utloggad - logga in igen!");
   $msg=$msgs[$msgcode-1];
}
}
?>
<html>
<head>
<link rel="stylesheet" href="stil.css" type="text/css">
<script language="javascript">
top.topframe.document.location='top.php';
top.topframe.document.reload;
top.left.document.location='left.php';
top.left.document.reload;
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<table border="0" cellpadding="0" cellspacing="0" width="480">
<tr>
<td class="text"><h2>DMZone Community - Login</h2>
Välkommen till DMZone Community - det community som 
exemplifierar artikelserien i Datormagazin om konstruktion av just såna häringa communities! Allteftersom artikelserien fortskrider 
så byggs denna community ut med fler moduler och som medlem kan du här se hur konstruktionen ser ut i verkligheten, så att 
säga.
<p>Har du inget DMZone-konto än, så skaffar du det <a href="nymedlem.php">här</a>.
<?
//Om extrameddelande existerar - skriv ut detta
if ($msg!="") { print "<p><b>$msg</b>\n"; }
?>
<br><br>
<table border="0" cellspacing="0" cellpadding="1" align="center" class="box">
<form method="post" action="dologin.php">
<tr>
<td>Användarnamn:</td>
<td><input type="text" name="un" size="16" maxlength="16" class="field"></td>
</tr>
<tr>
<td>Lösenord:</td>
<td><input type="password" name="pw" size="16" maxlength="8" class="field"></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="Logga in" class="field"></td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</body>
</html>

logout.php

<?

include("dblib.php");

if ((int)$userid>0) {
   mysql_query("UPDATE personer SET inloggad=0,tidstampel=tidstampel,session_id=\"\" WHERE id=$userid AND session_id=\"".session_id()."\"");
}

header("Location: login.php?msgcode=2");
?>

nymedlem.php

<?
error_reporting( ~E_NOTICE );

if ($action=="nymedlem") {

   if (strlen($un)<4 || strlen($un)>16 || strlen($pw)<4 || strlen($pw)>8) {
      $errmsg="Felaktigt format! Användarnamnet ska vara 4-16 tecken och lösenordet ska vara 4-8 tecken!";
   }
   else {
      include("dblib.php");
      if (mysql_result(mysql_query("SELECT count(id) AS antal FROM personer WHERE un=\"$un\""),0,"antal")>0) {
         $errmsg="Användarnamnet är redan upptaget! Välj ett annat!";
      }
      else {
         mysql_query("INSERT INTO personer SET un=\"$un\",pw=\"$pw\"");
         header("Location: login.php?msgcode=3");
         mysql_close();
         exit;
      }
      mysql_close();
   }
}
?>
<html>
<head>
<link rel="stylesheet" href="stil.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<table border="0" cellpadding="0" cellspacing="0" width="480">
<tr>
<td class="text"><h2>Ny medlem</h1><br>
<? if ($errmsg!="") { print $errmsg."<br><br>\n"; } //Visa eventuellt felmeddelande ?>
Hitta på ett användarnamn och ett lösenord och knappa in dessa i fälten nedan!
<br><br>
   <table border="0" cellspacing="0" cellpadding="1" align="center" class="box">
   <form method="post" action="nymedlem.php">
   <input type="hidden" name="action" value="nymedlem">
   <tr>
   <td>Användarnamn:</td>
   <td><input type="text" name="un" size="16" class="field"></td>
   </tr>
   <tr>
   <td>Lösenord:</td>
   <td><input type="password" name="pw" size="16" class="field"></td>
   </tr>
   <tr>
   <td colspan="2" align="right"><input type="submit" value="Bli medlem!" class="field"></td>
   </tr>
   </form>
   </table>
</td>
</tr>
</table>
</body>
</html>

start.php

<?
include("dblib.php");
inloggcheck($userid);
mysql_close();
?>
<html>
<head>
<link rel="stylesheet" href="stil.css" type="text/css">
<script language="javascript">
top.topframe.document.location='top.php';
top.topframe.document.reload;
top.left.document.location='left.php';
top.left.document.reload;
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="10">
<table border="0" cellpadding="0" cellspacing="0" width="480">
<tr>
<td class="text"><h2>DMZone Community</h2>
Nu är du inloggad! Senast inloggad (tidstämpel): <?=$senastinne;?>
</td>
</tr>
</table>
</body>
</head>
SPiNMedlem sedan mars 20007 896 inlägg
#15

Hua, det där orkar jag inte gå igenom. Läs mitt förra svar, så borde det bli bättre. Och lägg till error_reporting( ~E_NOTICE ) överst i alla dina PHP-dokument.

K++Medlem sedan juli 2002171 inlägg
#16

hehe.. okej men då är is_always_helpful( "SPiN" ) <> true :p

testar..

SPiNMedlem sedan mars 20007 896 inlägg
#17

Bah, du måste ju tänka lite på mig också - jag var ju trött. ;)

Och i PHP använder vi faktiskt inte <>, utan !=. :p

K++Medlem sedan juli 2002171 inlägg
#18

Okejdå :birp

Jag kommer att bygga ett script frång grunden nu... tror jag så glöm det... (förra scriptet, inte att du ska hjälpa mig §jr )

JonttoMedlem sedan okt. 2001125 inlägg
#19

Funckar det med if(isset($blä) && $blä == "kukkuu")?
Jag har alltid satt först en if(isset($blä)) { if($blä == "kukkuu") }

Har allt detta varit onödigt?

MVH,
Jontto

MatteMedlem sedan aug. 20002 975 inlägg
#20

Funckar det med if(isset($blä) && $blä == "kukkuu")?

Jag brukar göra så, och det har alltid fungerat, och vad jag vet så ska det dessutom fungera.

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