webForumDet fria alternativet

Klämma in ett värde... vill inte

PHP

15 svar · 268 visningar · startad av Webslave

Medlem sedan maj 2002647 inlägg
Frågan#1

Yo!
Jag försöker med ett inloggningsfunktion som hämtar användarID från en tabell med hjälp av användarnamn och lösenord... men när jag ska lägga in användarID:et i en session så vill det inte... allt annat fungerar utom just det...

<?php
session_start();

//ett par funktioner

function KollaInloggning(){
global $username,$password;
$connect = mysql_connect("localhost", "root","");
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_db_query("community","$sql");
	if(!($rad=mysql_fetch_array($result))){
		echo "Fel uppgifter!<br>";
	session_unset();
	session_destroy();
	       }
	       else{
          $userID=$rad["userID"];
          echo "Välkommen $username<br>Ditt användar ID är: $userID<br>";
          session_register(username);
          session_register(password);
          session_register(userID);
}
mysql_close($connect);
}

Detta vill inte alls... några bra idéer?

Medlem sedan mars 20007 896 inlägg
#2
session_register(username);
session_register(password);
session_register(userID);

->

session_register("username");
session_register("password");
session_register("userID");

Kan hjälpa.

Medlem sedan maj 2002647 inlägg
#3

Nope... det ville inte... användarnamnet får jag fram men inte användraID... *suck* Jag gillar inte att vara "nybörjare"

Medlem sedan mars 20007 896 inlägg
#4

Skrivs inte $userID ut, innan du sätter sessionerna? Då är fältet i databasen tomt - skulle jag gissa på. Eller så kanske inte ditt fält heter userID?

Medlem sedan maj 2002647 inlägg
#5

Jag har kollat upp det och raden i tabellen heter "userID" och har ett värde... men den vill ju inte hämta något ur $rad["userID"]... den är tom... är det något i koden som är fel... eller? Btw, userID är int, om det spelar någon roll...

Medlem sedan mars 20007 896 inlägg
#6

Hm, det verkar som att du bara vill plocka ut userID från databasen? Testa att göra så här:

Byt ut:

$sql = "SELECT userID FROM users WHERE username='$username' AND password='$password'";

$result = mysql_db_query("community","$sql");

if(!($rad=mysql_fetch_array($result))){
           echo "Fel uppgifter!<br>";

           session_unset();
           session_destroy();
    }
else{
          $userID=$rad["userID"];
          echo "Välkommen $username<br>Ditt användar ID är: $userID<br>";

Mot:

$sql = "SELECT userID FROM users WHERE username='$username' AND password='$password'";
$result = mysql_db_query( "community", $sql )
     or die( mysql_error() );

$row = mysql_fetch_array( $result );

if( !$row ) {
           echo "Fel uppgifter!<br>";

           session_unset();
           session_destroy();
}
else {
           $userID=$row["userID"];
           echo "Välkommen $username<br>Ditt användar ID är: $userID<br>";
...

Det borde ju inte göra någon skillnad, men man kan ju alltid testa. :)

Medlem sedan maj 2002647 inlägg
#7

Tackar... nu får jag fram userID men den vill inte in i sessionen... jag har en annan sida som jag ska ta med sessions_variablarna till och det är bara användarnamnet och lösenordet som följer med... jag får inte fram något... ska jag lägga upp all kod?

Medlem sedan mars 20007 896 inlägg
#8

Du har stavat rätt och allt?

session_register( "userID" );
Medlem sedan maj 2002647 inlägg
#9

Har inget mellanslag i session_register("userID");... men det borde väll inte spela någon roll... eller? Jag tror jag tar och postar koden så kan du skumma igenom den... ska försöka klippa ner den så det inte blir så jädrans mycket :)

Medlem sedan maj 2002647 inlägg
#10
<?
session_register("username");
session_register("password");
session_register("userID");

function NyPost(){
  global $post_titel,$post_text,$posterID;
  $post_datum = date("Y-m-d H:i:s");
  $connect = mysql_connect("localhost", "root","");
  $sql = "INSERT INTO posts(post_titel,post_text,posterID,post_datum) VALUES('$post_titel','$post_text','$posterID','$post_datum')";
  $result = mysql_db_query("community","$sql");
  mysql_close($connect);
  echo "Tack för ditt inlägg<br>";
}

function NyttSvar(){
  global $svar_text,$svararID,$postsvarID;
  $svar_datum= date("Y-m-d H:i:s");
  $connect = mysql_connect("localhost", "root","");
  $sql = "INSERT INTO svar(svar_text,svararID,postsvarID,svar_datum) VALUES('$svar_text','$svararID','$postsvarID','$svar_datum')";
  $result = mysql_db_query("community","$sql");

  $svar_datum= date("Y-m-d H:i:s");
  $sql = "UPDATE posts SET senaste_svar='$svar_datum',antal_svar=antal_svar+1 WHERE postID='$postsvarID'";
  $result = mysql_db_query("community","$sql");
  mysql_close($connect);
  echo "Tack för ditt svar<br>";
}

function PostForm(){
  global $userID,$username;
?>
<form method="post" action="post.php" name="NyPostForm">
<table>
<tr>
<td align="right">Titel:</td><td><input type="text" name="post_titel"></td>
</tr>
<tr>
<td valign="top" align="right">Text:</td><td><textarea name="post_text"></textarea></td>
</tr>
<tr>
<td></td><td><input type="submit" value="Posta" name="Skicka"><input type="hidden" value="<?=$userID?>" name="posterID"></td>
</tr>
</table>
Ditt användarnamn är: <?=$username?><br>
ditt användarID är: <?=$userID?>
</form>
<?
}

function SvarForm(){
  global $userID,$postID;
?>
<form method="post" action="post.php" name="NySvarForm">
<table>
<tr>
<td valign="top" align="right">Text:</td><td><textarea name="svar_text"></textarea></td>
</tr>
<tr>
<td></td><td><input type="submit" value="Svara" name="Skicka"><input type="hidden" value="<?=$userID?>" name="svararID"><input type="hidden" value="<?=$postID?>" name="postsvarID"></td>
</tr>
</table>
</form>
<?
}

function VisaPost(){
  global $visaID;
  $connect = mysql_connect("localhost", "root","");
   if(!empty($visaID)){
  $sql = "SELECT * FROM posts INNER JOIN users ON posts.posterID=users.userID WHERE postID='$visaID'";
  $result = mysql_db_query("community","$sql");
  $rad=mysql_fetch_array($result);
  echo $rad["post_titel"]."<br>";
  echo $rad["post_text"]."<br>";
  echo "Postad av: ".$rad["username"]."<br>";
  echo $rad["antal_svar"]." svar<br>";
  echo "<a href=\"?action=svara&postID=".$rad["postID"]."\">Svara</a><p>";
 }
 else{
  $sql = "SELECT * FROM posts ORDER BY post_datum DESC";
  $result = mysql_db_query("community","$sql");
  while($rad=mysql_fetch_array($result)){
    echo "<a href=\"?action=visapost&visaID=".$rad["postID"]."\">".$rad["post_titel"]."</a>";
    echo " <b>".$rad["antal_svar"]."</b> svar på inlägget<br>";
    echo " Inlägget skapades ".$rad["post_datum"].". ";
    if(!($rad["antal_svar"])){
      echo "<i>Inga svar ännu</i><p>";
    }
    else{
      echo "Senaste svar: ".$rad["senaste_svar"]."<p>";
    }
  }
  }  
  mysql_close($connect);
   
}

function Meny(){
  global $userID;
  ?>
  <a href="?action=posta">Skriv ett inlägg</a><br>
  <a href="?action=visapost">Se inlägg</a><br>
  <a href="index.php">Startsidan</a><br>
  <?=$userID?>
  <?
}

if($action=='posta'){
  PostForm();
}
if($action=='svara'){
  SvarForm();
}
if($action=='visapost'){
  VisaPost();
}
if(isset($Skicka)){
  if($Skicka=='Posta'){
    NyPost();
  }
  if($Skicka=='Svara'){
    NyttSvar();
  }
}

Meny();
  ?>

Vad är det som INTE är fel på denna kod? :D

Medlem sedan mars 20007 896 inlägg
#11

Jag orkar inte läsa igenom allt, men din top skulle jag ändra till det här:

<?php
session_start();

Alltså strunta i session_register(), och istället sätta session_start(). När du sedan anropa dina sessions-variabler, gör det med den globala associativa arrayen $_SESSION.

echo "Användare: " . $_SESSION[ 'username ' ];
Medlem sedan maj 2002647 inlägg
#12

Hum... ska vi se om jag har förstått detta rätt... jag ska alltså helt och hållet ta bort session_register() men hur får jag då in variablarna i sessionen? Eller ska jag bara ta bort session_register() på andra sidan?

Medlem sedan mars 20007 896 inlägg
#13

Du ska bara använda session_register() när du registrerar variabler som sessioner, dvs. vid inloggningen. Vad jag uppfattade, så var inte det på den sidan du postade? :)

Medlem sedan maj 2002647 inlägg
#14

Helt korrekt att det inte var samma sida.

Men nu så har jag skrivit om över allt och där jag hämtar $_session['username'] så är den tom... vet inte vad som har hänt... man kan ju inte behöva göra en sessionsvariabel global... hum... kan det vara något med inställningarna i php.ini?

Medlem sedan mars 20007 896 inlägg
#15

Nej, ingenting med PHP.ini. Däremot kanske du har en äldre version av PHP, då hämtar du med $HTTP_SESSION_VARS[ 'username' ].

Medlem sedan maj 2002647 inlägg
#16

Gah!... det vill inte alls... skumt. Jag håller på att bli knäpp... jädrans sessionshelsicke!!!!!!!!! :P

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)