webForumDet fria alternativet

Angående lajv (nybörjare i PHP)

6 svar · 497 visningar · startad av P0ntus:en

P0ntus:enMedlem sedan juli 200617 inlägg
#1

Hejsan! Jag är då en nybörjare inom PHP och jag har fått klagomål på detta scriptet och jag vet dock inte hur jag ska göra med hiddenfält,ska jag möjligen ta och ändra dom ifrån hidden till text eller ska det vara någon annan form av input i fälten? Scriptet bygger på MySQl samt Sessioner mestadels,men vill åtminstonde ha en färdig lösning av detta,det vore jättesnällt,vill även gära att ni kommenterar om ni kan och vill,tacksam för all hjälp jag kan få,behöver även hjälp med tabelstrukturen och för er som undrar så har jag dock ingen egen server.

lajv.php

<? 
session_start();
while ($row = mysql_fetch_array($resulta)){ 
$sql2 = mysql_query("INSERT INTO live(sender_id, sender_name, date, message) VALUES('{$_POST['sender_id']}', '{$_POST['sender_name']}', '{$_POST['date']}', '{$_POST['message']}')"); 
} 
else { echo 'Något vart fel!'; 
exit; 
} 
} 
?> 
<form action="live.php" method="post"> 
<name="sender_id" value="<?=$_SESSION['sess_id'] ?>"><br> 
<name="sender_name" value="<?=$_SESSION['sess_user'] ?>"><br> 
<name="date" value="<?=date('Y-m-d H:i:s') ?>"><br> 
Ditt meddelande:<br> 
<input type="text" name="message" value=""> 
<input type="submit" name="submit" value="Skicka">

Uthämtning

<?
 session_start();
// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_user'])){ 
header("Location: index.php"); 
exit; 
} 
?> 

<marquee onMouseover="this.scrollAmount=0" onMouseout="this.scrollAmount=3"><? 
$sql = mysql_query("SELECT * FROM lajv ORDER BY date DESC LIMIT 5"); //Dom 5 senaste skrivda "lajven" visas för tillfället,via 
//att ändra 5:an bestämmer du hur många meddelanden som ska visas 
//sammanlagt. 
while($row = mysql_fetch_array($sql)){ 
?> 
<?=$row['sender_name'];?>:&nbsp;<?=$row['message'];?></a>&nbsp;-&nbsp; 
<? } ?></marquee>

Tabellstruktur

CREATE TABLE lajv ( 
id int(11) NOT NULL auto_increment, 
sender_id varchar(50) NOT NULL default '', 
sender_name varchar(60) NOT NULL default '', 
message varchar(255) NOT NULL default '', 
date varchar(100) NOT NULL default '', 
PRIMARY KEY (id) 
) TYPE=MyISAM;
PeddaMedlem sedan juni 20006 032 inlägg
#2

dom två hidden fälten med sessionsvariablar bör du ta bort eftersom du kan hämta värdena på alla sidor om du har session_start överst i koden.

Varför behöver du ändra tabellstrukturen?

P0ntus:enMedlem sedan juli 200617 inlägg
#3

Pedda skrev:

dom två hidden fälten med sessionsvariablar bör du ta bort eftersom du kan hämta värdena på alla sidor om du har session_start överst i koden.

Varför behöver du ändra tabellstrukturen?

Hur menart du att jag ska göra med hidden fälten? Ska jag bara ta bort "input type=hidden" och ändra till session_start där istället? Du får lov att förklara bättre för jag är dock nybörjare på hög nivå.

Det var en annan som ansåg att jag skulle göra det men kommer inte ihåg hans motivation till varför om du ursäktar.

PeddaMedlem sedan juni 20006 032 inlägg
#4
  1. Radera hidden fälten. sess_id är ett unikt värde som ska skyddas
  2. Ha session_start() överst på alla sidor, annars dör sessionen

Alla sidor ska ha session_start() överst. Det får inte ens finnas ett blanksteg innan!

<?php
session_start();
?>

Sen plockar du bara ut personens sess_id

$sender_id = $_SESSION['sess_id'];
$sender_name = $_SESSION['sess_user'];

Värden i hiddenfält från ett formulär kan enkelt manipuleras, men det är betydligt svårare att manipulera en session.

P0ntus:enMedlem sedan juli 200617 inlägg
#5

Pedda skrev:

  1. Radera hidden fälten. sess_id är ett unikt värde som ska skyddas
  2. Ha session_start() överst på alla sidor, annars dör sessionen

Alla sidor ska ha session_start() överst. Det får inte ens finnas ett blanksteg innan!

<?php
session_start();
?>

Sen plockar du bara ut personens sess_id

$sender_id = $_SESSION['sess_id'];
$sender_name = $_SESSION['sess_user'];

Värden i hiddenfält från ett formulär kan enkelt manipuleras, men det är betydligt svårare att manipulera en session.

Sådär någonting ? =)

CompusaMedlem sedan jan. 20023 327 inlägg
#6

Ja! Att hålla på att skicka runt sessioner med hidden-fält är brutalt onödigt. Hela grund-iden med sessions är att det är detta du ska slippa, dvs inte behöva skicka runt värden med forms men ändå komma åt dom.

Pedda har uttryck det hela väldigt tydligt, om du ändå inte förstår så kan du läsa följande:
http://codewalkers.com/tutorialpdfs/tutorial32.pdf
http://www.softwareprojects.org/php-sessions-17.htm

P0ntus:enMedlem sedan juli 200617 inlägg
#7

Compusa skrev:

Ja! Att hålla på att skicka runt sessioner med hidden-fält är brutalt onödigt. Hela grund-iden med sessions är att det är detta du ska slippa, dvs inte behöva skicka runt värden med forms men ändå komma åt dom.

Pedda har uttryck det hela väldigt tydligt, om du ändå inte förstår så kan du läsa följande:
http://codewalkers.com/tutorialpdfs/tutorial32.pdf
http://www.softwareprojects.org/php-sessions-17.htm

Då är detta ett färdigt exemplar med andra ord ? (överlycklig) :)

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