Avatar billede lesp Nybegynder
29. februar 2008 - 21:07 Der er 7 kommentarer

Formular smadrer session

Hej

Når jeg kører formularen i dette script bliver jeg sendt til login.php:

<?
session_start();
include("connect.php");
$id = $_GET[id];


if(!isset($_SESSION['id'])){
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
       
}else{
$query = "SELECT * FROM users WHERE id = '".$_SESSION['id']."'";

$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);
$user = $log["user"];
echo"$user";
$query2 = "SELECT * FROM messages WHERE modtager = '$user' && laest = 'n'";
$result2 = mysql_query($query2)or die("MySQL fejl: " . mysql_error());
$log2 = mysql_fetch_array($result2);
if(isset($_POST[text])){

$query3 = "SELECT * FROM topics WHERE id_parent = '$id'";
$result3 = mysql_query($query3)or die("MySQL fejl: " . mysql_error());
$log3 = mysql_fetch_array($result3);

          $sql = "INSERT INTO topics (titel,text,date,author,id_parent)
            VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')";
        $sql = sprintf($sql,
            mysql_real_escape_string($log3['titel']),
            mysql_real_escape_string($_POST['text']),
            mysql_real_escape_string(now()),
            mysql_real_escape_string($user),
            mysql_real_escape_string($log3['id_parent'])
            );

        $res = mysql_query($sql) or die(mysql_error());
       
}


$foresp = mysql_query("SELECT * FROM topics where id_parent = '$id'") or die(mysql_error());

while ($row = mysql_fetch_array($foresp)) {
  echo"<br><br>Titel: $row[titel]<br>Text: $row[text]<br>";
 
  echo"<form method='post' action='$PHP_SELF'>
  <textarea name='text'>Skriv en meddelelse</textarea>
<input type='submit'></form>";
}
}
?>
Avatar billede yHec Novice
29. februar 2008 - 22:11 #1
Hvorfor blander du php pg js, hvor det ikke er nødvendigt??

if(!isset($_SESSION['id'])){
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");

Giver mere mening således:
if(!isset($_SESSION['id'])) header("location:login.php");
Der må bare ikke være output før denne linje, men det ser der heller ikke ud til at være.

Er du sikker på $_SESSION['id'] er sat?

/y
Avatar billede lesp Nybegynder
01. marts 2008 - 00:08 #2
Ja det er jeg. Men jeg forstår stadig ikke hvorfor jeg bliver sendt til login.php. Jeg kan prøve at lave den rettelse du foreslog, og ser om det hjælper.
Avatar billede lesp Nybegynder
01. marts 2008 - 00:10 #3
Hvilket det ikke gjorde...
Avatar billede showsource Seniormester
01. marts 2008 - 10:43 #4
Prøv at ændre navnet $id til noget andet.
Hvis server kører med register_globals On får du problemer med at bruge samme navn, $_GET, COOKIE, $_POST og $_SESSSION

$refid = $_GET["id"];
Avatar billede lesp Nybegynder
01. marts 2008 - 14:11 #5
Utroligt nok bliver jeg nu ikke sendt til login.php, men nu får jeg denne fejl:

Fatal error: Call to undefined function now() in topics.php on line 30
Avatar billede yHec Novice
01. marts 2008 - 15:23 #6
Det er fordi now() ikke er en php function, men en der bruges af (my)sql.

Prøv det her istedet;
        $sql = "INSERT INTO topics (titel,text,date,author,id_parent)
        VALUES ('%s', '%s', now(), '%s', '%s')";
        $sql = sprintf($sql,
            mysql_real_escape_string($log3['titel']),
            mysql_real_escape_string($_POST['text']),
            mysql_real_escape_string($user),
            mysql_real_escape_string($log3['id_parent'])
            );

/y
Avatar billede lesp Nybegynder
02. marts 2008 - 12:39 #7
Det virkede. Nu sker der bare det, at scriptet tager alle topics fra tabellen Topics hvor id_parent er et. Selvom jeg sender at id=2 eller id=1. Den tager alle med id_parent = '1'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester