webForumDet fria alternativet

Header problem

6 svar · 564 visningar · startad av Sico

SicoMedlem sedan maj 20002 597 inlägg
#1

Hej,

Jag sökte på "header" och fick en hel del svar, men jag får det bara inte att fungera. Är det något litet jävelskap jag missat eller måste jag göra "output buffering"? Fattar inte riktigt hur jag ska använda det.
Jag är helt blank inom php, har jobbat en del med SQL och ASP innan.

member-formedling.php

<?php
	require_once('auth.php');

	session_start();
	require_once("conn.php");

if(isset($_GET['change'])) {

	if(empty($_GET['change'])) {
	header("Location: member-formedling.php");
	exit;
	} else {
		
		$id = $_GET['change'];
		$sql = "SELECT * FROM nyheter WHERE id='$id' LIMIT 1";
		$result = mysql_query($sql) or die (mysql_error());
			while ($result=mysql_fetch_object($result)) {
			
			echo "<form action=\"?changeit=".$result->id."\" method=\"POST\" name=\"change\">";
			echo "<b>Rubrik</b><br>";
			echo "<input type=\"text\" name=\"titel\" class=\"textfield\" value=\"".$result->titel."\">&nbsp;Datum: ".$result->datum."<br><br>";
			echo "<b>Text</b><br>";
			echo "<textarea name=\"text\" cols=\"70\" class=\"textfield\" rows=\"10\">".$result->text."</textarea><br><br>";
			echo "<input type=\"submit\" value=\"Ändra\">";
			echo "</form>";
			}
		}
	}

else {
	echo "<form action=\"?writeit=1\" method=\"POST\">";
			echo "<b>Rubrik</b><br>";
			echo "<input type=\"text\" class=\"textfield\" name=\"titel\"><br><br>";
			echo "<b>Text</b><br>";
			echo "<textarea name=\"text\" class=\"textfield\" cols=\"70\" rows=\"10\"></textarea><br><br>";
			echo "<input type=\"submit\" name=\"submit\" value=\"Lägg till\">";
			echo "</form>";

	}

echo "<br><br><br><br>";
echo "<h1>Lista förmedlingar</h1>";

$sql = "SELECT * FROM nyheter ORDER BY id";
$result = mysql_query($sql) or die (mysql_error());
while ($rad=mysql_fetch_array($result)) {

	echo "<table border=\"0\"><th><td width=\"380\"><a href=\"?change=".$rad['id']."\">".$rad['titel']."</a></td><td width=\"70\"><a href=\"?delete=".$rad['id']."\">Radera</a></td></th></table>";

}
?>

Conn.php

<?
/**********************
Mysql
**********************/
$server = "********"; //Default
$user = "********";
$password = "********";
$db = "********";
$table = "********";

$lank = mysql_connect ($server, $user, $password) or die ("couldnt connect!");
mysql_select_db($db, $lank) or die ("cant find database!");

/**********************
General
**********************/
if(isset($_GET['changeit'])) {
	if($_GET['changeit'] == "") {
	header("Location: member-formedling.php");
	exit;
	} else {
	$id = $_GET['changeit'];
	$titel = $_POST['titel'];
	$datum = date("Y-m-d H:i:s");
	$text = $_POST['text'];
	$sql = "UPDATE $table SET titel='$titel', datum='$datum', text='$text' WHERE id='$id'";
	mysql_query($sql) or die (mysql_error());
	header("Location: member-formedling.php");
	exit;
	}
}

if(isset($_GET['delete'])) {
	if(empty($_GET['delete'])) {
	header("Location: member-formedling.php");
	exit;
	} else {
	$id = $_GET['delete'];
	$sql = "DELETE FROM $table WHERE id='$id' LIMIT 1";
	mysql_query($sql) or die (mysql_error());
	header("Location: member-formedling.php");
	exit;
	}
}

if(isset($_GET['writeit'])) {

	if(isset($_POST['submit'])) {
	
	$titel = $_POST['titel'];
	$text = $_POST['text'];
	$date = date("Y-m-d H:i:s");
	
	$sql = "INSERT INTO $table (titel, text, datum)
			VALUES ('$titel', '$text', '$date')";
	mysql_query($sql) or die (mysql_error());
	header("Location: member-formedling.php");
	exit;
	} else {
	header("Location: member-formedling.php");
	exit;
	}
}
?>
jmeMedlem sedan maj 20012 237 inlägg
#2

Vad exakt är problemet?

OT:

Sedan bör du ALDRIG placera värden i en SQL-sats utan att säkerställa innehållet först!

Din kod är inte säker mot SQL-injections.

Om du kör med MySql:

https://www.php.net/mysql_real_escape_string

SicoMedlem sedan maj 20002 597 inlägg
#3

Problemet ligger i redirecten i conn.php som ej fungerar.

header("Location: member-formedling.php");

Aha, ska kika på det. Tackar.

jmeMedlem sedan maj 20012 237 inlägg
#4

Definiera "fungerar ej". Finns filen member-formedling.php?

Vad får du för felmeddelande? Får du en vit sida?

Får du typ "...headers already sent"?

SicoMedlem sedan maj 20002 597 inlägg
#5

Jag är visst lite snål med information :(

Trycker jag på "radera" på inlägget med tex id=3 så kommer jag till "member-formedling.php?delete=3" istället för att styras tillbaka till "member-formedling.php".
Inget felmeddelande med andra ord.

clovecMedlem sedan dec. 200574 inlägg
#6

Du måste ha med session_start(); i conn.php, längs upp under php taggen, var noga med att inga mellanslag eller liknande finns ovanför.

Likaså i member.formedling.php , lägg session_start(); längst upp dvs flytta ner require_once('auth.php');

PeddaMedlem sedan juni 20006 032 inlägg
#7

/red Jag svamlade visst till det.
Testa att ta bort LIMIT 1

$sql = "DELETE FROM $table WHERE id='$id'";

Men som det har skrivits tidigare, du bör kontrollera att variablerna innehåller giltiga värden innan du kör mot databasen och du bör även kolla så det inte är obehöriga som försöker radera från databasen.

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