Gå til innhold

Samle post på alle PHP sps jeg har, rundt brukersystemet mitt


Anbefalte innlegg

Skrevet

<?php
//This is the directory where images will be saved
$target = "./images/";
$target .= basename($_FILES['photo']['name']); 

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
$photo=($_FILES['photo']['name']);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error());

?>

 

Tror kansje jeg fant feilen, men har ikke fått testet selv, men du kan jo prøve koden over istedenfor den du postet i den siste posten din.

Videoannonse
Annonse
Skrevet
Legg til

 

echo "<pre>";
print_r($_REQUEST);

 

før sql spørringen..

 

Da vil det du jobber med, printes ut. Hvilken values forskjellige ting har.

 

 

Nå gjorde jeg som du sa Rematusen, men da fikk jeg opp dette:

Array
(
 [PHPSESSID] => f4ea461528ecf5e72b34c5f844afc888
)

 

:hmm:

 

Men hva returnerer spørringen din?

Prøv å bare skrive echo i steden for mysql_query..

 

Altså, bytt dette:

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error());

 

Til:

echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

Skrevet

Sjark, den koden din fungerte i teorien, og den laster opp bilde, men igjen ikke informasjon til databasen.

 

Meldingen jeg får etter dette:

The file stygg.JPG has been uploaded, and your information has been added to the directory

 

Rematusen, det ser ut for meg som at den ikke klarer og fange opp brukernavnet til bruker. For nå prøvde jeg det du sa, og da får jeg dette:

Array
(
[PHPSESSID] => e8a7530a3ba2d03b06a69572a4e624a5
)
UPDATE brukere SET `photo` = 'stygg.JPG' WHERE `brukernavn` = ''
The file  has been uploaded, and your information has been added to the directory

Skrevet

Ser feilen, står det ?brukernavn=xxxx i url'en din? det må gjøre det for at det skal fungere, hvis du bruker en form så må det stå $_POST['brukernavn'] i spørringen istedenfor $_GET['brukernavn']

Skrevet

URL'n = index.php?side=endrebruker

 

Så hvis jeg nå legger inn $_POST['brukernavn'] istedet, så må jeg vel også legge inn en input i formen da?

 

Gammel form:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Bilde: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Ny form?

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Ditt brukernavn: <input type="tekst" name="brukernavn"><br> 
Bilde: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

Skrevet (endret)

Nå prøvet jeg ut hva du sa Sjark, men det fungerte ikke.. Den legger ennå ikke inn i databasen.

 

Formen er nå:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Brukernavn:<br> <input type="text" name="brukernavn"><br> 
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Add.php er nå:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Og meldingen etter UPDATE'N er:

Array
(
[brukernavn] => admin
[PHPSESSID] => 613fcab01a30e17721c901befbd6626c
)
UPDATE brukere SET `photo` = 'opel.PNG' WHERE `brukernavn` = 'admin'
The file  has been uploaded, and your information has been added to the directory

 

edit: redigert vekk passord. var samme som til brukeren :p

Endret av djwawa
Skrevet (endret)

Nå er URL'en slik når jeg er i formen:

index.php?side=endrebruker&brukernavn=julius

 

Og formen ser slik ut:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST">  
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Som dere sikkert ser, så er ikke URL'en til add.php slik: index.php?side=add&brukernavn=*julius* Men den er bare /profilbilder/add.php

Kan dette ha noe å si? Er det her feilen ligger? For hvis jeg lager formen med en "brukernavn" input, så vil jo "julius", kunne skrive "admin" og bytte bildet hans.. Eller er jeg helt på jordet nå?

 

Og add filen ser slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Prøvd denne også:

echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

 

Men skal jeg nå bytte til:

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET/POST['brukernavn']."'");

???

 

Takker iallefall for masse god hjelp!

Endret av djwawa
Skrevet

Nå ser formen slik ut:

262819.jpeg

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST">  
Brukernavn: <br><input type="text" name="brukernavn"><br> 
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Da taster man inn brukernavnet sitt i den øverste, og finner filen i den nederste.

Og da fungerer det.

 

Add.php ser nå slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Men jeg tenkte på en ting. Hvis jeg MÅ bruke det sånn, at man MÅ taste inn brukernavnet sitt, så kan jeg jo prøve med at de må taste passord også? Eller lage ett hidden felt med _GET[brukernavn], fordi jeg har jo index.php?side=endrebruker&brukernavn=julius. Og da henter vel ut "julius" og legger det i det skjult feltet, og senere legger bildet på plass?

 

Men måtte bare prøve å teste om det fungerte og skrive ?side=endrebruker&brukernavn=** altså at julius kan skrive admin istedenfor julius, og da endrer jo han brukeren til admin.

 

Off, dette ble mye det :p

Skrevet

Ja, dersom du krever at folk skriver inn kun brukernavn for å endre på slike ting, så kan alle endre alles bilder. Du må jo naturligvis hente ut brukernavn fra sessions e.l. fra login.

Skrevet

Nå vet jeg ikke hvordan innlogginen din fungerer osv, men hvis du feks lagrer brukernavnet i en SESSION når personen logger inn, kan du bruke det, da blir det feks $_SESSION['brukernavn'] i steden for $_POST['brukernavn'], er vel ca de samme som Jonas sa.

 

Du kan også endre mysql_queryen til

$query = "UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'";
if(mysql_query($query)) {
echo "Queryen fungerte!";
}
else {
echo mysql_error();
}

Da vil du få opp en feilmelding hvis det er noe galt me selve mysql oppdateringen, og hva som er galt.

Skrevet

Sjark, prøvde å endre mysql_queryen til det du sa og da fikk jeg beskjed om at Queryen fungerte!

 

Add.php ser nå slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_SESSION['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Men ennå så legger den ikke inn informasjonen i databasen. Slenger også med config filen, som flere filer henter informajson fra:

<?php
session_start();
ob_start();

$host = "localhost"; // Vanligvis 'localhost'
$brukernavn = "root"; // hva du logger inn med i database
$passord = "***"; // Hva du har som passord når du logger inn
$database = "blogg"; // Navnet på databasen

$con = mysql_connect("$host", "$brukernavn", "$passord");
$con = mysql_select_db("$database");


if($_SESSION[id]) {
$l = mysql_query("SELECT * From `brukere` WHERE `id`='$_SESSION[id]'");
$l = mysql_fetch_array($l);
}
?>

 

 

Slenger også ved login.php filen:

<?php
if(!$_SESSION[id]) {
if(!$_GET[brukernavn]) {
$check = mysql_query("SELECT * FROM `brukere`");
$check2 = mysql_num_rows($check);

if(isset($_POST[logginn])) {

$brukernavn = $_POST[email];
				  $passord = sha1($_POST[passord]);

				  $select = mysql_query("SELECT * FROM `brukere` WHERE `email`='$brukernavn'");
				  $select = mysql_fetch_array($select);

				  if($passord == $select[passord]) {
				  echo ("Riktig, Du er nå logget inn");				
				  $_SESSION[id] = $select[id];
				  header("Location: index.php");
				  }
				  else
				  {
				  echo ("Feil e-post adresse og/eller passord!");
				  }

}
else
{
?>
<h1>
 <form method="POST" action="">
		E-post:<br>
		<input type="text" name="email">
		<br>
		Passord:<br>
		<input type="password" name="passord">
		<br>
		<input type="submit" name="logginn" value="Logg Inn" id="logginn">
		<br>
		<a href="?side=registrer">Registrer</a> - <a href="?side=glemtpassord">Glemt Passord?</a>
  </form>
  </h1>
<?php
}
}
}
else
{

if($_POST[logut]) {
session_destroy();
echo ("Du er logget ut!<br>Velkommen tilbake!<p><a href='?side=hoved'>Tilbake</a>");
}
else
{
echo("
Brukernavn: <b>$l[brukernavn] </b><br>
<a href='?side=bruker&brukernavn=$l[brukernavn]'>Se din profil</a><p>
<a href='?side=endrebruker&brukernavn=$l[brukernavn]'>Endre profil!</a><br>
<a href=\"?side=bruker\">Se brukere</a><br>
<form method=\"POST\" action=\"\"><input type=\"submit\" name=\"logut\" value=\"Logg ut\"></form>
");
}
}
?>

Skrevet (endret)

Prøv denne:

<?php

//This is the directory where images will be saved
$target = "./images/";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$photo=($_FILES['photo']['name']);

// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'");

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

 

Tror den skal fungere ;-)

Endret av Sjark
Skrevet

Nei desverre sjark, den fungerer ennå ikke.. Den legger ikke inn i databasen, med mindre jeg har ett felt i formen som heter "brukernavn".

Skrevet

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

 

ang denne så har jeg opplevt til tider at den ikke liker POST i SQLen. prøv å putt den i en variabel først og deretter i UPDATE.

 

eks:

 

$_brukernavn = $_POST['brukernavn'];

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '$_brukernavn'");

Skrevet

Tull, det har ingen ting å si. Som du kanskje ser på koden, så concater (morsom fornorsking) han med POST-verdiene, han legger de ikke inni stringen slik du ser ut til å gjøre.

Skrevet

Wabby: Det gir jo egentlig ingen mening, for jeg skal jo ikke bruke $_POST, men $_SESSION, fordi login.php lager en session, men jeg forstår ikke hvordan jeg kan få den add.php til å hente den session id'n som ble laget når brukeren logget på..

 

Det er vel det jeg må gjøre, tror jeg?! :p

 

Takk til alle som hjelper til!

Skrevet

Nå har jeg endelig fått det til :) Med MYE om og men og hjelp fra mange! Jeg la iallefall inn hele upload/add.php i formen min, fordi den er includet i endrebruker siden min, og adressen der er: index.php?side=endrebruker&bruker=BRUKERNAVN. Så brukte jeg $_GET for å få brukernavnet, og da klarte den det!

 

Her er koden, hvis noen vil ha:)

<?php

//This is the directory where images will be saved 
$target = "./inc/images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "**") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

if($_POST[endreprofilbilde]) {
$pb = ($_POST[photo]);
$q = mysql_query("UPDATE `brukere` SET `photo`='$photo' WHERE `id`='$_SESSION[id]'");
//Writes the information to the database 

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<?php
//Tells you if its all ok 
echo "Profilbildet er blitt endret!<br>Ditt nye bilde:<p>"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
}
?>
<?php
include("./inc/view.php");
?>
<form enctype="multipart/form-data" action="" method="POST">  
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" name="endreprofilbilde" value="Bytt profilbilde"> 
</form>

Skrevet

Grattis :)

 

Men du bør skille ut en del av funksjonaliteten og Include den isteden. Det er også litt rotete å bruke include midt i fila.

 

Dele det opp i functions vil hjelpe deg med å få det oversiktlig, gjenbruk av kode. :)

Skrevet (endret)
Prøv denne:
Klikk for å se/fjerne innholdet nedenfor
<?php

//This is the directory where images will be saved
$target = "./images/";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$photo=($_FILES['photo']['name']);

// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'");

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

 

Tror den skal fungere ;-)

 

Den fungerer! - Du har bare glemt session_start(); i toppen!

 

Prøv det djwawa, sett session_start(); i toppen av scriptet som ligger i spoiler taggen...

 

EDIT: Pluss at du har seriøse sikkerhets feil med det scriptet du fikk til og fungere, burde helst ikke bruke $_GET i en query, da en bruker kan lett endre selve koden, og hvis du må bruke det, så burde du strippe $_GET variebelen for html tagger, og all slags slashes, osv...

Endret av Famen

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...