Avatar billede nicocarlos Nybegynder
01. marts 2004 - 15:36 Der er 5 kommentarer og
2 løsninger

Session problem (2)

Hej. Jeg har fået endnu et problem med mine sessions, sidst jeg havde var der fordi kørte script på index.php derfor satte session_start();, i toppen af dette, men nu er jeg købet ind i et andet problem, at den kun henter halvdelen af min index.php når jeg kører dette script i min "main"....

<?php
session_start();
if (!session_is_registered("username")) {
echo "<p>Du skal være logget ind!</p>";
die;
}
else {
}

include("dbconn.php");
$result1=mysql_query("select * from users WHERE username='$username'") or die ("cant do it");
$row100 = mysql_fetch_array($result1);
?>
<p>| <a href="mail.php?action=compose">Compose</a> | <a href="mail.php?action=inbox">Inbox</a>
  | </p>
<p><br />
  <a href=login_success.php><--back</a><table cellpadding="1" cellspacing="1" height="300" width="450">
</p>
<tr><td align=center valign=top>
<?php
if($action==compose) {
echo "<form action=mail.php?action=compose2 method=post>";
echo "<table>";
echo "<tr><td>Subject:</td><td><input type=text name=subject size=20 value=$subject></td></tr>";
echo "<tr><td>To:</td><td><input type=text name=to size=20 value=$to></td></tr>";
echo "<tr><td>Message:</td><td><textarea rows=16 cols=45 name=message></textarea></td></tr>";
echo "<tr><td><input type=submit value=post></td></tr>";
echo "</table>";
echo "</form>";
}
if($action==compose2) {
$subject or die("Subject Blank");
$message or die("Message Black");
$to or die("To blank");
$date = date(YmdHis);
 
 
$create = "INSERT INTO mail (UserTo, UserFrom, Subject, Message, SentDate, status)
VALUES ('$to','$username','$subject','$message','$date','unread')";
$create2 = mysql_query($create) or die("A letter could not be sent to $to!");
echo("Message Sent to $to!");

}
if($action==inbox) {
$result=mysql_query("select * from mail where UserTo='$username' ORDER BY SentDate DESC") or die ("cant do it");
echo "<table cellpadding=2 cellspacing=1 width=500 valign=top>";
while ($row=mysql_fetch_array($result)) {
echo "<tr><td width=30>Mail:</td><td><a href=mail.php?action=veiw&mail_id=$row[mail_id]>$row[Subject]</a></td><td width=50> <a href=mail.php?action=delete&id=$row[mail_id]><center>Delete</a><br></td></tr>";
}
echo "</table>";
}
if($action==veiw) {
$result=mysql_query("select * from mail where UserTo='$username' and mail_id=$mail_id") or die ("cant do it");
$row=mysql_fetch_array($result);
if($row[UserTo]==$username) {
} else {
echo "<font face=verdana><b>This isn't your mail!";
exit;
}
$query="UPDATE mail SET status='read' WHERE UserTo='$username' AND mail_id='$row[mail_id]'";
$query or die("An error occurred resulting that this message has not been marked read.");
echo "<table border = 1 bordercolor = black width = 50% align=center><tr><td>$row[Subject]</td><td>$row[UserFrom]</td></tr><tr><td colspan='2'>$row[Message]<br><a href=mail.php?action=compose&to=$row[UserFrom]&subject=RE:$row[Subject]>Reply</a></td></tr></table>";
$rs = mysql_query("UPDATE mail SET status='read' WHERE mail_id='$mail_id'");
}
if($action==delete) {
$query = mysql_query("DELETE FROM mail WHERE mail_id='$id' LIMIT 1");
if($query) {
echo "<font face=verdana>Message Deleted.</font>";
} else {
echo "The message wasnt deleted.";
}
}
?>

håber at der er en som kan hjælpe :D
Avatar billede nicocarlos Nybegynder
01. marts 2004 - 15:39 #1
dårlig stavning, hehe...håber i stadig forstår
Avatar billede jcoder Nybegynder
03. marts 2004 - 12:07 #2
Har du et link til siden så man kan se hvilke fejl du evt. får ?

OG hvorfor bruge en }else{} i toppen som ikke laver noget ville i stedet gør følgende:

if (!session_is_registered("username")) { header("Location: login.php"); }

...som sender brugeren direkte til login siden igen i stedet.

/jcoder
Avatar billede nicocarlos Nybegynder
03. marts 2004 - 13:37 #3
ok, tester det lige om et par timer, når jeg kommer hjem, den skriver ikke nogle php errors, men den henter kun halvdelen af html..
Avatar billede jcoder Nybegynder
03. marts 2004 - 14:10 #4
Ok, det eneste der lige fanger mine øjene som skulle gøre dette er at du flere gange bruger "die" som netop gør dettet i stedet for at skrive meddelsen ud med echo eks. die("Message Black"); burdte nok hedde echo "Message Black"; hvis du vil have layout omkring.

Eks. "Note that using the die() function will stop the entire script after that point from being run, so if you issue the die function within a open HTML tag, the HTML tag will remain open, which can seriously effect the browsers output to the user, expecially if its used inside an open <TABLE> tag." (citat fra php.net

Mvh J
Avatar billede nicocarlos Nybegynder
03. marts 2004 - 16:31 #5
Ok, jeg har fundet ud af det. Det skyldes ikke php :(, det skyldes en tabelfejl jeg lige fandt:
><table cellpadding="1" cellspacing="1" height="300" width="450">
</p>
<tr><td align=center valign=top>
Det stykke ødelagde, det jeg havde men tak for din gode forkalring og hjælp jeg deler point...
Avatar billede nicocarlos Nybegynder
03. marts 2004 - 16:37 #6
Hvis jeg ikke skal bruge die; Hvad skal jeg så bruge?
Avatar billede jcoder Nybegynder
03. marts 2004 - 20:57 #7
Normalt ville jeg lave testen i toppen af dokumentet før indholdet udskrives og så skrive status meddelsen ind i en variabel eks.

$status = "Message Black";
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